diff options
Diffstat (limited to 'src/layer.cc')
| -rw-r--r-- | src/layer.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/layer.cc b/src/layer.cc index d09f7be..6dfff9b 100644 --- a/src/layer.cc +++ b/src/layer.cc @@ -92,6 +92,7 @@ CreateInstance(const VkInstanceCreateInfo* pCreateInfo, INSTANCE_VTABLE_LOAD(GetInstanceProcAddr); INSTANCE_VTABLE_LOAD(CreateDevice); INSTANCE_VTABLE_LOAD(EnumerateDeviceExtensionProperties); + INSTANCE_VTABLE_LOAD(GetPhysicalDeviceQueueFamilyProperties2); #undef INSTANCE_VTABLE_LOAD const auto lock = std::scoped_lock{layer_context.mutex}; @@ -384,7 +385,7 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue2( if (!queue || !*queue) { return; } - + const auto key = layer_context.get_key(*queue); const auto lock = std::scoped_lock{layer_context.mutex}; const auto [it, inserted] = layer_context.contexts.try_emplace(key); @@ -443,6 +444,10 @@ vkQueueSubmit(VkQueue queue, std::uint32_t submit_count, if (!submit_count) { // no-op submit we shouldn't worry about return vtable.QueueSubmit(queue, submit_count, submit_infos, fence); } + + if (!queue_context->should_inject_timestamps()) { + return vtable.QueueSubmit(queue, submit_count, submit_infos, fence); + } // What's happening here? // We are making a very modest modification to all vkQueueSubmits where we @@ -527,6 +532,10 @@ vkQueueSubmit2(VkQueue queue, std::uint32_t submit_count, return vtable.QueueSubmit2(queue, submit_count, submit_infos, fence); } + if (!queue_context->should_inject_timestamps()) { + return vtable.QueueSubmit2(queue, submit_count, submit_infos, fence); + } + using cbs_t = std::vector<VkCommandBufferSubmitInfo>; auto next_submits = std::vector<VkSubmitInfo2>{}; auto next_cbs = std::vector<std::unique_ptr<cbs_t>>{}; |
