aboutsummaryrefslogtreecommitdiff
path: root/src/layer.cc
diff options
context:
space:
mode:
authorNicolas James <Eele1Ephe7uZahRie@tutanota.com>2026-02-20 20:57:37 +1100
committerNicolas James <Eele1Ephe7uZahRie@tutanota.com>2026-02-20 20:57:37 +1100
commit7f3439714858d4c70f60db71543df15db5708d92 (patch)
tree93ce5d3f5f9ec715b0c3627ae82362175678c9d7 /src/layer.cc
parent9954233c9a730acba0a433dabd158ee5e8f131a5 (diff)
Don't inject timestamps into unsupported queues
Diffstat (limited to 'src/layer.cc')
-rw-r--r--src/layer.cc11
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>>{};