anv: Set driver version to Mesa version
[mesa.git] / src / intel / vulkan / anv_util.c
index 5fbc7cc113b0bd81d4694e14a5662688c72f8ae3..4b916e27f2c910c20d75ea199b90bf6510c688f3 100644 (file)
@@ -29,6 +29,8 @@
 #include <assert.h>
 
 #include "anv_private.h"
+#include "vk_enum_to_str.h"
+#include "util/debug.h"
 
 /** Log an error message.  */
 void anv_printflike(1, 2)
@@ -63,38 +65,26 @@ __anv_finishme(const char *file, int line, const char *format, ...)
    fprintf(stderr, "%s:%d: FINISHME: %s\n", file, line, buffer);
 }
 
+void anv_printflike(3, 4)
+__anv_perf_warn(const char *file, int line, const char *format, ...)
+{
+   va_list ap;
+   char buffer[256];
+
+   va_start(ap, format);
+   vsnprintf(buffer, sizeof(buffer), format, ap);
+   va_end(ap);
+
+   fprintf(stderr, "%s:%d: PERF: %s\n", file, line, buffer);
+}
+
 VkResult
 __vk_errorf(VkResult error, const char *file, int line, const char *format, ...)
 {
    va_list ap;
    char buffer[256];
 
-#define ERROR_CASE(error) case error: error_str = #error; break;
-
-   const char *error_str;
-   switch ((int32_t)error) {
-
-   /* Core errors */
-   ERROR_CASE(VK_ERROR_OUT_OF_HOST_MEMORY)
-   ERROR_CASE(VK_ERROR_OUT_OF_DEVICE_MEMORY)
-   ERROR_CASE(VK_ERROR_INITIALIZATION_FAILED)
-   ERROR_CASE(VK_ERROR_DEVICE_LOST)
-   ERROR_CASE(VK_ERROR_MEMORY_MAP_FAILED)
-   ERROR_CASE(VK_ERROR_LAYER_NOT_PRESENT)
-   ERROR_CASE(VK_ERROR_EXTENSION_NOT_PRESENT)
-   ERROR_CASE(VK_ERROR_INCOMPATIBLE_DRIVER)
-   ERROR_CASE(VK_ERROR_FRAGMENTED_POOL)
-
-   /* Extension errors */
-   ERROR_CASE(VK_ERROR_OUT_OF_DATE_KHR)
-   ERROR_CASE(VK_ERROR_OUT_OF_POOL_MEMORY_KHR)
-
-   default:
-      assert(!"Unknown error");
-      error_str = "unknown error";
-   }
-
-#undef ERROR_CASE
+   const char *error_str = vk_Result_to_str(error);
 
    if (format) {
       va_start(ap, format);
@@ -106,5 +96,9 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...)
       fprintf(stderr, "%s:%d: %s\n", file, line, error_str);
    }
 
+   if (error == VK_ERROR_DEVICE_LOST &&
+       env_var_as_boolean("ANV_ABORT_ON_DEVICE_LOSS", false))
+      abort();
+
    return error;
 }