aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Kuderski <kubakuderski@gmail.com>2023-03-07 11:16:31 -0500
committerGitHub <noreply@github.com>2023-03-07 11:16:31 -0500
commit933ecb4d6288675a92eb1650e0f52b1d7afe8273 (patch)
treef20bf50a1635a1fcfba335491855da600afbc1f7
parentcae1b0f84f0c21f7187b37481134e1c3ac6de6a6 (diff)
downloadamber-933ecb4d6288675a92eb1650e0f52b1d7afe8273.tar.gz
Print error result on `vkWaitForFences` failure (#1020)
This makes it easier to tell why this vulkan function did not succeed.
-rw-r--r--src/vulkan/command_buffer.cc21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/vulkan/command_buffer.cc b/src/vulkan/command_buffer.cc
index 765ef94..a61c241 100644
--- a/src/vulkan/command_buffer.cc
+++ b/src/vulkan/command_buffer.cc
@@ -15,6 +15,7 @@
#include "src/vulkan/command_buffer.h"
#include <cassert>
+#include <string>
#include "src/vulkan/command_pool.h"
#include "src/vulkan/device.h"
@@ -97,8 +98,24 @@ Result CommandBuffer::SubmitAndReset(uint32_t timeout_ms) {
static_cast<uint64_t>(timeout_ms) * 1000ULL * 1000ULL /* nanosecond */);
if (r == VK_TIMEOUT)
return Result("Vulkan::Calling vkWaitForFences Timeout");
- if (r != VK_SUCCESS)
- return Result("Vulkan::Calling vkWaitForFences Fail");
+ if (r != VK_SUCCESS) {
+ std::string result_str;
+ switch (r) {
+ case VK_ERROR_OUT_OF_HOST_MEMORY:
+ result_str = "OUT_OF_HOST_MEMORY";
+ break;
+ case VK_ERROR_OUT_OF_DEVICE_MEMORY:
+ result_str = "OUT_OF_DEVICE_MEMORY";
+ break;
+ case VK_ERROR_DEVICE_LOST:
+ result_str = "DEVICE_LOST";
+ break;
+ default:
+ result_str = "<UNEXPECTED RESULT>";
+ break;
+ }
+ return Result("Vulkan::Calling vkWaitForFences Fail (" + result_str + ")");
+ }
if (device_->GetPtrs()->vkResetCommandBuffer(command_, 0) != VK_SUCCESS)
return Result("Vulkan::Calling vkResetCommandBuffer Fail");