aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicolas James <nj3ahxac@gmail.com>2026-04-08 14:44:40 +1000
committerNicolas James <nj3ahxac@gmail.com>2026-04-08 14:44:40 +1000
commit622f4d60627a43395797bb147a7c138171ee025d (patch)
tree08a873e6c83ab80eb0d5ce5ebe3335a8d38580a1 /src
parent6ae5ce31e34f3b15a25ada53e64a0098316f98c9 (diff)
Guard against bad vkQueueSubmit before notifying contexts
Diffstat (limited to 'src')
-rw-r--r--src/layer.cc24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/layer.cc b/src/layer.cc
index 5df896a..e94fe54 100644
--- a/src/layer.cc
+++ b/src/layer.cc
@@ -420,9 +420,13 @@ vkQueueSubmit(VkQueue queue, std::uint32_t submit_count,
return next_submit;
});
- const auto result = vtable.QueueSubmit(
- queue, static_cast<std::uint32_t>(std::size(next_submits)),
- std::data(next_submits), fence);
+ if (const auto result = vtable.QueueSubmit(
+ queue, static_cast<std::uint32_t>(std::size(next_submits)),
+ std::data(next_submits), fence);
+ result != VK_SUCCESS) {
+
+ return result;
+ }
// We have to notify after we submit - otherwise we have a race where we
// wait for work that wasn't submitted.
@@ -430,7 +434,7 @@ vkQueueSubmit(VkQueue queue, std::uint32_t submit_count,
context->strategy->notify_submit(submit, std::move(handle));
}
- return result;
+ return VK_SUCCESS;
}
// The logic for this function is identical to vkSubmitInfo.
@@ -480,15 +484,19 @@ vkQueueSubmit2(VkQueue queue, std::uint32_t submit_count,
return next_submit;
});
- const auto result = vtable.QueueSubmit2(
- queue, static_cast<std::uint32_t>(std::size(next_submits)),
- std::data(next_submits), fence);
+ if (const auto result = vtable.QueueSubmit2(
+ queue, static_cast<std::uint32_t>(std::size(next_submits)),
+ std::data(next_submits), fence);
+ result != VK_SUCCESS) {
+
+ return result;
+ }
for (auto&& [submit, handle] : std::views::zip(submit_span, handles)) {
context->strategy->notify_submit(submit, std::move(handle));
}
- return result;
+ return VK_SUCCESS;
}
static VKAPI_ATTR VkResult VKAPI_CALL