| 423 | } |
| 424 | |
| 425 | void InitTracyVk(VkInstance instance, VkPhysicalDevice gpu, VkDevice device, PFN_vkGetInstanceProcAddr GetInstanceProcAddr, |
| 426 | PFN_vkGetDeviceProcAddr GetDeviceProcAddr, VkLayerDispatchTable& device_dispatch_table) { |
| 427 | VVL_ZoneScoped; |
| 428 | |
| 429 | TracyVkCollector::CreateCommandPool = device_dispatch_table.CreateCommandPool; |
| 430 | TracyVkCollector::AllocateCommandBuffers = device_dispatch_table.AllocateCommandBuffers; |
| 431 | TracyVkCollector::CreateFence = device_dispatch_table.CreateFence; |
| 432 | TracyVkCollector::WaitForFences = device_dispatch_table.WaitForFences; |
| 433 | TracyVkCollector::DestroyFence = device_dispatch_table.DestroyFence; |
| 434 | TracyVkCollector::FreeCommandBuffers = device_dispatch_table.FreeCommandBuffers; |
| 435 | TracyVkCollector::DestroyCommandPool = device_dispatch_table.DestroyCommandPool; |
| 436 | TracyVkCollector::ResetFences = device_dispatch_table.ResetFences; |
| 437 | |
| 438 | TracyVkCollector::ResetCommandBuffer = device_dispatch_table.ResetCommandBuffer; |
| 439 | TracyVkCollector::BeginCommandBuffer = device_dispatch_table.BeginCommandBuffer; |
| 440 | TracyVkCollector::EndCommandBuffer = device_dispatch_table.EndCommandBuffer; |
| 441 | TracyVkCollector::QueueSubmit = device_dispatch_table.QueueSubmit; |
| 442 | |
| 443 | for (TracyVkCtx& tracy_vk_ctx : tracy_vk_contexts) { |
| 444 | tracy_vk_ctx = TracyVkContextHostCalibrated(instance, gpu, device, GetInstanceProcAddr, GetDeviceProcAddr); |
| 445 | assert(tracy_vk_ctx); |
| 446 | } |
| 447 | } |
| 448 | |
| 449 | void CleanupTracyVk(VkDevice device) { |
| 450 | VVL_ZoneScoped; |