diff options
author | Jakub Kuderski <kubakuderski@gmail.com> | 2023-03-07 11:16:31 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-07 11:16:31 -0500 |
commit | 933ecb4d6288675a92eb1650e0f52b1d7afe8273 (patch) | |
tree | f20bf50a1635a1fcfba335491855da600afbc1f7 | |
parent | cae1b0f84f0c21f7187b37481134e1c3ac6de6a6 (diff) | |
download | amber-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.cc | 21 |
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"); |