X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fintel%2Fvulkan%2Fanv_util.c;h=4b916e27f2c910c20d75ea199b90bf6510c688f3;hb=59c1797d560bfd3172427128ef8455d416b1cdb0;hp=5fbc7cc113b0bd81d4694e14a5662688c72f8ae3;hpb=ba26c791573727acf802787a3c7b5e19504d946c;p=mesa.git diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c index 5fbc7cc113b..4b916e27f2c 100644 --- a/src/intel/vulkan/anv_util.c +++ b/src/intel/vulkan/anv_util.c @@ -29,6 +29,8 @@ #include #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; }