X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fintel%2Fvulkan%2Fanv_util.c;h=1159ccecc6a9fea5fdda9217b703d399fc1cbc1c;hb=c9bebae2877e55cdcd94f9f9f3f6805238caeb28;hp=2972cd2b8c4c82210de69bb588a02e48378cd5df;hpb=8df014c01a41012a983bd0be164600ab50300e5c;p=mesa.git diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c index 2972cd2b8c4..1159ccecc6a 100644 --- a/src/intel/vulkan/anv_util.c +++ b/src/intel/vulkan/anv_util.c @@ -29,6 +29,7 @@ #include #include "anv_private.h" +#include "vk_enum_to_str.h" /** Log an error message. */ void anv_printflike(1, 2) @@ -45,83 +46,81 @@ anv_loge(const char *format, ...) void anv_loge_v(const char *format, va_list va) { - fprintf(stderr, "vk: error: "); - vfprintf(stderr, format, va); - fprintf(stderr, "\n"); + intel_loge_v(format, va); } -void anv_printflike(3, 4) -__anv_finishme(const char *file, int line, const char *format, ...) +void anv_printflike(6, 7) +__anv_perf_warn(struct anv_instance *instance, const void *object, + VkDebugReportObjectTypeEXT type, + const char *file, int line, const char *format, ...) { va_list ap; char buffer[256]; + char report[512]; va_start(ap, format); vsnprintf(buffer, sizeof(buffer), format, ap); va_end(ap); - fprintf(stderr, "%s:%d: FINISHME: %s\n", file, line, buffer); -} + snprintf(report, sizeof(report), "%s: %s", file, buffer); -void anv_noreturn anv_printflike(1, 2) -anv_abortf(const char *format, ...) -{ - va_list va; + vk_debug_report(&instance->debug_report_callbacks, + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT, + type, + (uint64_t) (uintptr_t) object, + line, + 0, + "anv", + report); - va_start(va, format); - anv_abortfv(format, va); - va_end(va); -} - -void anv_noreturn -anv_abortfv(const char *format, va_list va) -{ - fprintf(stderr, "vk: error: "); - vfprintf(stderr, format, va); - fprintf(stderr, "\n"); - abort(); + intel_logw("%s:%d: PERF: %s", file, line, buffer); } VkResult -__vk_errorf(VkResult error, const char *file, int line, const char *format, ...) +__vk_errorv(struct anv_instance *instance, const void *object, + VkDebugReportObjectTypeEXT type, VkResult error, + const char *file, int line, const char *format, va_list ap) { - va_list ap; char buffer[256]; + char report[512]; -#define ERROR_CASE(error) case error: error_str = #error; break; - - const char *error_str; - switch ((int32_t)error) { + const char *error_str = vk_Result_to_str(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) + if (format) { + vsnprintf(buffer, sizeof(buffer), format, ap); - /* Extension errors */ - ERROR_CASE(VK_ERROR_OUT_OF_DATE_KHR) + snprintf(report, sizeof(report), "%s:%d: %s (%s)", file, line, buffer, + error_str); + } else { + snprintf(report, sizeof(report), "%s:%d: %s", file, line, error_str); + } - default: - assert(!"Unknown error"); - error_str = "unknown error"; + if (instance) { + vk_debug_report(&instance->debug_report_callbacks, + VK_DEBUG_REPORT_ERROR_BIT_EXT, + type, + (uint64_t) (uintptr_t) object, + line, + 0, + "anv", + report); } -#undef ERROR_CASE + intel_loge("%s", report); - if (format) { - va_start(ap, format); - vsnprintf(buffer, sizeof(buffer), format, ap); - va_end(ap); + return error; +} - fprintf(stderr, "%s:%d: %s (%s)\n", file, line, buffer, error_str); - } else { - fprintf(stderr, "%s:%d: %s\n", file, line, error_str); - } +VkResult +__vk_errorf(struct anv_instance *instance, const void *object, + VkDebugReportObjectTypeEXT type, VkResult error, + const char *file, int line, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + __vk_errorv(instance, object, type, error, file, line, format, ap); + va_end(ap); return error; }