radv: rework the error function helpers a bit
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 7 Aug 2020 14:05:46 +0000 (16:05 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 10 Aug 2020 12:09:19 +0000 (14:09 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6230>

src/amd/vulkan/radv_private.h
src/amd/vulkan/radv_util.c

index 603b0c94a22d81fffa068b854ca8bc92a9c00829..0634350701e94765baf27a89eda7b076c7dbf1c8 100644 (file)
@@ -194,7 +194,13 @@ radv_clear_mask(uint32_t *inout_mask, uint32_t clear_mask)
 struct radv_image_view;
 struct radv_instance;
 
-VkResult __vk_errorf(struct radv_instance *instance, VkResult error, const char *file, int line, const char *format, ...);
+VkResult __vk_errorv(struct radv_instance *instance, VkResult error,
+                    const char *file, int line, const char *format,
+                    va_list args);
+
+VkResult __vk_errorf(struct radv_instance *instance, VkResult error,
+                    const char *file, int line, const char *format, ...)
+       radv_printflike(5, 6);
 
 #define vk_error(instance, error) __vk_errorf(instance, error, __FILE__, __LINE__, NULL);
 #define vk_errorf(instance, error, format, ...) __vk_errorf(instance, error, __FILE__, __LINE__, format, ## __VA_ARGS__);
index 72bedc687d4bd7b408d471f408c21305f546e082..01224157e5ed1e7f932db50af21349714203eb1c 100644 (file)
@@ -88,11 +88,11 @@ void radv_printflike(3, 4)
 }
 
 VkResult
-__vk_errorf(struct radv_instance *instance, VkResult error, const char *file,
-           int line, const char *format, ...)
+__vk_errorv(struct radv_instance *instance, VkResult error, const char *file,
+           int line, const char *format, va_list ap)
 {
-       va_list ap;
        char buffer[256];
+       char report[512];
 
        const char *error_str = vk_Result_to_str(error);
 
@@ -102,15 +102,29 @@ __vk_errorf(struct radv_instance *instance, VkResult error, const char *file,
 #endif
 
        if (format) {
-               va_start(ap, 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);
        }
 
+       fprintf(stderr, "%s\n", report);
+
        return error;
 }
 
+VkResult
+__vk_errorf(struct radv_instance *instance, VkResult error, const char *file,
+           int line, const char *format, ...)
+{
+       va_list ap;
+
+       va_start(ap, format);
+       __vk_errorv(instance, error, file, line, format, ap);
+       va_end(ap);
+
+       return error;
+}