diff options
| author | Nicolas James <nj3ahxac@gmail.com> | 2026-04-08 14:44:40 +1000 |
|---|---|---|
| committer | Nicolas James <nj3ahxac@gmail.com> | 2026-04-08 14:44:40 +1000 |
| commit | 622f4d60627a43395797bb147a7c138171ee025d (patch) | |
| tree | 08a873e6c83ab80eb0d5ce5ebe3335a8d38580a1 /src | |
| parent | 6ae5ce31e34f3b15a25ada53e64a0098316f98c9 (diff) | |
Guard against bad vkQueueSubmit before notifying contexts
Diffstat (limited to 'src')
| -rw-r--r-- | src/layer.cc | 24 |
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 |
