Added functioning example
This commit is contained in:
parent
32caa1aa60
commit
4c3b18d560
6 changed files with 100 additions and 62 deletions
|
|
@ -13,13 +13,13 @@ add_library(app-glue STATIC
|
|||
|
||||
# build vulkan app
|
||||
add_library(kompute_android SHARED
|
||||
main.cpp
|
||||
${VK_ANDROID_COMMON_DIR}/vulkan_wrapper.cpp)
|
||||
main.cpp)
|
||||
|
||||
include_directories(
|
||||
${VK_ANDROID_COMMON_DIR}
|
||||
${VK_ANDROID_INCLUDE_DIR}
|
||||
../../../../../../../single_include/)
|
||||
../../../../../../../single_include/
|
||||
../../../../../../../vulkan_ndk_patch_include/)
|
||||
|
||||
# TODO: Explore:
|
||||
# * -DVK_NO_PROTOTYPES
|
||||
|
|
@ -35,5 +35,5 @@ target_link_libraries(kompute_android
|
|||
kompute
|
||||
app-glue
|
||||
log
|
||||
"libvulkan.so"
|
||||
android_vulkan_wrapper
|
||||
android)
|
||||
|
|
@ -22,12 +22,10 @@
|
|||
#include <vector>
|
||||
#include <unistd.h>
|
||||
//#include "TutorialValLayer.hpp"
|
||||
//#include "vulkan_wrapper.h"
|
||||
|
||||
#include "kompute/Kompute.hpp"
|
||||
|
||||
|
||||
|
||||
// Android log function wrappers
|
||||
static const char* kTAG = "Vulkan-Tutorial01";
|
||||
#define LOGI(...) \
|
||||
|
|
@ -78,13 +76,16 @@ void android_main(struct android_app* app) {
|
|||
|
||||
bool initialize(android_app* app) {
|
||||
// // Load Android vulkan and retrieve vulkan API function pointers
|
||||
// if (!InitVulkan()) {
|
||||
// LOGE("Vulkan is unavailable, install vulkan and re-start");
|
||||
// return false;
|
||||
// }
|
||||
LOGI("Initialising vulkan");
|
||||
// sleep(1);
|
||||
|
||||
if (!InitVulkan()) {
|
||||
LOGE("Vulkan is unavailable, install vulkan and re-start");
|
||||
return false;
|
||||
}
|
||||
|
||||
LOGI("Starting");
|
||||
sleep(1);
|
||||
// sleep(1);
|
||||
VkApplicationInfo appInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
|
||||
.pNext = nullptr,
|
||||
|
|
@ -95,7 +96,7 @@ bool initialize(android_app* app) {
|
|||
.pEngineName = "tutorial",
|
||||
};
|
||||
LOGI("Created");
|
||||
sleep(1);
|
||||
// sleep(1);
|
||||
|
||||
// prepare necessary extensions: Vulkan on Android need these to function
|
||||
std::vector<const char *> instanceExt, deviceExt;
|
||||
|
|
@ -104,7 +105,7 @@ bool initialize(android_app* app) {
|
|||
deviceExt.push_back("VK_KHR_swapchain");
|
||||
|
||||
LOGI("Creating instance");
|
||||
sleep(1);
|
||||
// sleep(1);
|
||||
// Create the Vulkan instance
|
||||
VkInstanceCreateInfo instanceCreateInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
|
||||
|
|
@ -118,7 +119,7 @@ bool initialize(android_app* app) {
|
|||
CALL_VK(vkCreateInstance(&instanceCreateInfo, nullptr, &tutorialInstance));
|
||||
|
||||
LOGI("Creating createinfo");
|
||||
sleep(1);
|
||||
// sleep(1);
|
||||
// if we create a surface, we need the surface extension
|
||||
VkAndroidSurfaceCreateInfoKHR createInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
|
||||
|
|
@ -226,20 +227,24 @@ bool initialize(android_app* app) {
|
|||
|
||||
LOGI("BEFORE RUNNING");
|
||||
|
||||
// kp::Manager mgr;
|
||||
kp::Manager mgr;
|
||||
|
||||
// auto tensorA = mgr.buildTensor({0,1,2});
|
||||
// auto tensorB = mgr.buildTensor({0,1,2});
|
||||
// auto tensorC = mgr.buildTensor({0,0,0});
|
||||
auto tensorA = mgr.buildTensor({0,1,2});
|
||||
auto tensorB = mgr.buildTensor({0,1,2});
|
||||
auto tensorC = mgr.buildTensor({1,2,3});
|
||||
|
||||
// mgr.evalOpDefault<kp::OpMult<>>({tensorA, tensorB, tensorC});
|
||||
// mgr.evalOpDefault<kp::OpTensorSyncLocal>({tensorC});
|
||||
//
|
||||
// LOGI("HERE IS THE INFORMATION:");
|
||||
//
|
||||
// for(const float & i : tensorC->data()) {
|
||||
// LOGI("%u ", i);
|
||||
// }
|
||||
for(const float & i : tensorC->data()) {
|
||||
LOGI("%f ", i);
|
||||
}
|
||||
|
||||
mgr.evalOpDefault<kp::OpMult<>>({tensorA, tensorB, tensorC});
|
||||
mgr.evalOpDefault<kp::OpTensorSyncLocal>({tensorC});
|
||||
|
||||
LOGI("HERE IS THE INFORMATION:");
|
||||
|
||||
for(const float & i : tensorC->data()) {
|
||||
LOGI("%f ", i);
|
||||
}
|
||||
|
||||
initialized_ = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -44,14 +44,13 @@ if(KOMPUTE_OPT_ANDOID_BUILD)
|
|||
add_library(android_app_glue STATIC
|
||||
${ANDROID_APP_GLUE_DIR}/android_native_app_glue.c)
|
||||
|
||||
#add_library(android_vulkan_wrapper STATIC
|
||||
# ${VK_ANDROID_COMMON_DIR}/vulkan_wrapper.cpp)
|
||||
add_library(android_vulkan_wrapper STATIC
|
||||
${PROJECT_SOURCE_DIR}/vulkan_ndk_patch_include/kompute_vulkan_wrapper.cpp)
|
||||
endif()
|
||||
|
||||
if(KOMPUTE_OPT_ANDOID_BUILD)
|
||||
add_library(kompute
|
||||
${kompute_CPP}
|
||||
${PROJECT_SOURCE_DIR}/vulkan_ndk_patch_include/kompute_vulkan_wrapper.cpp)
|
||||
${kompute_CPP})
|
||||
else()
|
||||
add_library(kompute
|
||||
${kompute_CPP})
|
||||
|
|
@ -87,6 +86,7 @@ if(KOMPUTE_OPT_ANDOID_BUILD)
|
|||
target_link_libraries(
|
||||
kompute
|
||||
android_app_glue
|
||||
android_vulkan_wrapper
|
||||
log
|
||||
android
|
||||
)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,28 @@ extern "C" {
|
|||
#include "kompute_vulkan_wrapper.hpp"
|
||||
#include <dlfcn.h>
|
||||
|
||||
PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
|
||||
PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
|
||||
PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
|
||||
PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
|
||||
PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
|
||||
PFN_vkCompileDeferredNV vkCompileDeferredNV;
|
||||
PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
|
||||
PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
|
||||
PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
|
||||
PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
|
||||
PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif
|
||||
|
||||
|
||||
int InitVulkan(void) {
|
||||
void* libvulkan = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL);
|
||||
if (!libvulkan) return 0;
|
||||
|
|
@ -694,17 +716,6 @@ PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;
|
|||
PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;
|
||||
PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;
|
||||
PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;
|
||||
PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
|
||||
PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
|
||||
PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
|
||||
PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
|
||||
PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
|
||||
PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
|
||||
PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
|
||||
PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
|
||||
PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
|
||||
PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
|
||||
PFN_vkCompileDeferredNV vkCompileDeferredNV;
|
||||
PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
|
||||
PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;
|
||||
PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
|
||||
|
|
@ -716,15 +727,6 @@ PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;
|
|||
PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;
|
||||
PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
||||
PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -409,4 +409,6 @@ extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlib
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif // VULKAN_WRAPPER_H
|
||||
|
||||
|
|
|
|||
|
|
@ -8,19 +8,48 @@
|
|||
#define VK_NO_PROTOTYPES 1
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
//typedef void *PFN_vkCreateAccelerationStructureNV;
|
||||
//typedef void *PFN_vkDestroyAccelerationStructureNV;
|
||||
//typedef void *PFN_vkGetAccelerationStructureMemoryRequirementsNV;
|
||||
//typedef void *PFN_vkBindAccelerationStructureMemoryNV;
|
||||
//typedef void *PFN_vkCmdBuildAccelerationStructureNV;
|
||||
//typedef void *PFN_vkCmdCopyAccelerationStructureNV;
|
||||
//typedef void *PFN_vkCmdTraceRaysNV;
|
||||
//typedef void *PFN_vkCreateRayTracingPipelinesNV;
|
||||
//typedef void *PFN_vkGetRayTracingShaderGroupHandlesNV;
|
||||
//typedef void *PFN_vkGetAccelerationStructureHandleNV;
|
||||
//typedef void *PFN_vkCmdWriteAccelerationStructuresPropertiesNV;
|
||||
//typedef void *PFN_vkCompileDeferredNV;
|
||||
// Adding references previously in vulkan_wrapper.cpp into here instead for vulkan.hpp
|
||||
extern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
|
||||
extern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
|
||||
extern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
|
||||
extern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
|
||||
extern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
|
||||
extern PFN_vkCompileDeferredNV vkCompileDeferredNV;
|
||||
extern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
|
||||
extern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
|
||||
extern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
|
||||
extern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
|
||||
extern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif
|
||||
|
||||
extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
|
||||
extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
|
||||
extern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;
|
||||
extern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;
|
||||
extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
|
||||
extern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;
|
||||
extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
|
||||
extern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;
|
||||
extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;
|
||||
extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
|
||||
extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
|
||||
extern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;
|
||||
extern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;
|
||||
extern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;
|
||||
extern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;
|
||||
extern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;
|
||||
extern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;
|
||||
extern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
|
||||
extern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
|
||||
extern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;
|
||||
|
||||
typedef void *PFN_vkBindAccelerationStructureMemoryNVX;
|
||||
typedef void *PFN_vkCmdBuildAccelerationStructureNVX;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue