summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/anv_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/vulkan/anv_util.c')
-rw-r--r--src/intel/vulkan/anv_util.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c
index 45ce0a3aa0e..ec61f7355ef 100644
--- a/src/intel/vulkan/anv_util.c
+++ b/src/intel/vulkan/anv_util.c
@@ -93,10 +93,13 @@ __anv_perf_warn(struct anv_instance *instance, const void *object,
}
VkResult
-__vk_errorf(VkResult error, const char *file, int line, const char *format, ...)
+__vk_errorf(struct anv_instance *instance, const void *object,
+ VkDebugReportObjectTypeEXT type, VkResult error,
+ const char *file, int line, const char *format, ...)
{
va_list ap;
char buffer[256];
+ char report[256];
const char *error_str = vk_Result_to_str(error);
@@ -105,11 +108,23 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...)
vsnprintf(buffer, sizeof(buffer), format, ap);
va_end(ap);
- fprintf(stderr, "%s:%d: %s (%s)\n", file, line, buffer, error_str);
+ snprintf(report, sizeof(report), "%s:%d: %s (%s)", file, line, buffer,
+ error_str);
} else {
- fprintf(stderr, "%s:%d: %s\n", file, line, error_str);
+ snprintf(report, sizeof(report), "%s:%d: %s", file, line, error_str);
}
+ anv_debug_report(instance,
+ VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ type,
+ (uint64_t) (uintptr_t) object,
+ line,
+ 0,
+ "anv",
+ report);
+
+ fprintf(stderr, "%s\n", report);
+
if (error == VK_ERROR_DEVICE_LOST &&
env_var_as_boolean("ANV_ABORT_ON_DEVICE_LOSS", false))
abort();