diff options
Diffstat (limited to 'render/vulkan/vkassert.h')
-rw-r--r-- | render/vulkan/vkassert.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/render/vulkan/vkassert.h b/render/vulkan/vkassert.h index 393e2de..4d4f99b 100644 --- a/render/vulkan/vkassert.h +++ b/render/vulkan/vkassert.h @@ -4,10 +4,42 @@ #include <rune/core/logging.h> #include <rune/core/abort.h> #include <vulkan/vulkan.h> +#include <string.h> -static inline void vkassert(VkResult value, const char *str) { +static char* get_vkerr_str(VkResult res) { + char *ret; + switch (res) { + case VK_SUCCESS: + ret = "SUCCESS"; + break; + case VK_ERROR_OUT_OF_HOST_MEMORY: + ret = "OUT OF HOST MEMORY"; + break; + case VK_ERROR_OUT_OF_DEVICE_MEMORY: + ret = "OUT OF DEVICE MEMORY"; + break; + case VK_ERROR_INITIALIZATION_FAILED: + ret = "INITIALIZATION FAILED"; + break; + case VK_ERROR_LAYER_NOT_PRESENT: + ret = "VALIDATION LAYER NOT PRESENT"; + break; + case VK_ERROR_EXTENSION_NOT_PRESENT: + ret = "EXTENSION NOT PRESENT"; + break; + case VK_ERROR_INCOMPATIBLE_DRIVER: + ret = "INCOMPATIBLE DRIVER"; + break; + default: + ret = "UNKNOWN RESULT"; + break; + } + return strdup(ret); +} + +static inline void vkassert(VkResult value) { if (value != VK_SUCCESS) { - log_output(LOG_ERROR, "Vulkan assertion failed: %s", str); + log_output(LOG_FATAL, "Vulkan error: %s", get_vkerr_str(value)); rune_abort(); } } |