diff --git a/src/optick.h b/src/optick.h index 96b28b99..c3c87b84 100644 --- a/src/optick.h +++ b/src/optick.h @@ -763,6 +763,7 @@ struct OPTICK_API GPUContext //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// OPTICK_API void InitGpuD3D12(ID3D12Device* device, ID3D12CommandQueue** cmdQueues, uint32_t numQueues); OPTICK_API void InitGpuVulkan(VkDevice* vkDevices, VkPhysicalDevice* vkPhysicalDevices, VkQueue* vkQueues, uint32_t* cmdQueuesFamily, uint32_t numQueues, const VulkanFunctions* functions); +OPTICK_API void ShutdownGpuVulkan(); OPTICK_API void GpuFlip(void* swapChain); OPTICK_API GPUContext SetGpuContext(GPUContext context); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1025,6 +1026,7 @@ struct OptickApp // GPU events #define OPTICK_GPU_INIT_D3D12(DEVICE, CMD_QUEUES, NUM_CMD_QUEUS) ::Optick::InitGpuD3D12(DEVICE, CMD_QUEUES, NUM_CMD_QUEUS); #define OPTICK_GPU_INIT_VULKAN(DEVICES, PHYSICAL_DEVICES, CMD_QUEUES, CMD_QUEUES_FAMILY, NUM_CMD_QUEUS, FUNCTIONS) ::Optick::InitGpuVulkan(DEVICES, PHYSICAL_DEVICES, CMD_QUEUES, CMD_QUEUES_FAMILY, NUM_CMD_QUEUS, FUNCTIONS); +#define OPTICK_GPU_SHUTDOWN_VULKAN() ::Optick::ShutdownGpuVulkan(); // Setup GPU context: // Params: @@ -1100,6 +1102,7 @@ struct OptickApp #define OPTICK_SHUTDOWN() #define OPTICK_GPU_INIT_D3D12(DEVICE, CMD_QUEUES, NUM_CMD_QUEUS) #define OPTICK_GPU_INIT_VULKAN(DEVICES, PHYSICAL_DEVICES, CMD_QUEUES, CMD_QUEUES_FAMILY, NUM_CMD_QUEUS, FUNCTIONS) +#define OPTICK_GPU_SHUTDOWN_VULKAN() #define OPTICK_GPU_CONTEXT(...) #define OPTICK_GPU_EVENT(NAME) #define OPTICK_GPU_FLIP(SWAP_CHAIN) diff --git a/src/optick_gpu.vulkan.cpp b/src/optick_gpu.vulkan.cpp index 14db500e..953c13bc 100644 --- a/src/optick_gpu.vulkan.cpp +++ b/src/optick_gpu.vulkan.cpp @@ -84,13 +84,20 @@ namespace Optick void Flip(void* swapChain) override; }; + GPUProfilerVulkan* gpuProfiler = nullptr; + void InitGpuVulkan(VkDevice* vkDevices, VkPhysicalDevice* vkPhysicalDevices, VkQueue* vkQueues, uint32_t* cmdQueuesFamily, uint32_t numQueues, const VulkanFunctions* functions) { - GPUProfilerVulkan* gpuProfiler = Memory::New(); + gpuProfiler = Memory::New(); gpuProfiler->InitDevice(vkDevices, vkPhysicalDevices, vkQueues, cmdQueuesFamily, numQueues, functions); Core::Get().InitGPUProfiler(gpuProfiler); } + void ShutdownGpuVulkan() + { + Memory::Delete(gpuProfiler); + } + GPUProfilerVulkan::GPUProfilerVulkan() { }