summaryrefslogtreecommitdiff
path: root/render/vulkan/vkassert.h
diff options
context:
space:
mode:
Diffstat (limited to 'render/vulkan/vkassert.h')
-rw-r--r--render/vulkan/vkassert.h36
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();
}
}