<div dir="ltr">I sent two patches for this an hour ago....<br></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 26, 2018 at 12:31 PM Eric Engestrom <<a href="mailto:eric.engestrom@intel.com">eric.engestrom@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This de-duplicates the error messages.<br>
<br>
Signed-off-by: Eric Engestrom <<a href="mailto:eric.engestrom@intel.com" target="_blank">eric.engestrom@intel.com</a>><br>
---<br>
Kinda hacky, so I won't take it personally if I get a "heck no!" :P<br>
---<br>
 src/intel/vulkan/anv_device.c  | 27 ++++++++-------------------<br>
 src/intel/vulkan/anv_private.h |  5 +++++<br>
 src/intel/vulkan/anv_queue.c   | 16 ++++------------<br>
 src/intel/vulkan/genX_query.c  |  4 +---<br>
 4 files changed, 18 insertions(+), 34 deletions(-)<br>
<br>
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c<br>
index 495a4ecab080bdd7de41..bb418b6969da644aba8a 100644<br>
--- a/src/intel/vulkan/anv_device.c<br>
+++ b/src/intel/vulkan/anv_device.c<br>
@@ -2049,7 +2049,7 @@ void anv_GetDeviceQueue2(<br>
 }<br>
<br>
 void<br>
-anv_device_set_lost(struct anv_device *device, const char *msg, ...)<br>
+(anv_device_set_lost)(struct anv_device *device, const char *msg, ...)<br>
 {<br>
    device->_lost = true;<br>
<br>
@@ -2079,19 +2079,13 @@ anv_device_query_status(struct anv_device *device)<br>
    int ret = anv_gem_gpu_get_reset_stats(device, &active, &pending);<br>
    if (ret == -1) {<br>
       /* We don't know the real error. */<br>
-      anv_device_set_lost(device, "get_reset_stats failed: %m");<br>
-      return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                       "get_reset_stats failed: %m");<br>
+      return anv_device_set_lost(device, "get_reset_stats failed: %m");<br>
    }<br>
<br>
    if (active) {<br>
-      anv_device_set_lost(device, "GPU hung on one of our command buffers");<br>
-      return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                       "GPU hung on one of our command buffers");<br>
+      return anv_device_set_lost(device, "GPU hung on one of our command buffers");<br>
    } else if (pending) {<br>
-      anv_device_set_lost(device, "GPU hung with commands in-flight");<br>
-      return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                       "GPU hung with commands in-flight");<br>
+      return anv_device_set_lost(device, "GPU hung with commands in-flight");<br>
    }<br>
<br>
    return VK_SUCCESS;<br>
@@ -2109,9 +2103,7 @@ anv_device_bo_busy(struct anv_device *device, struct anv_bo *bo)<br>
       return VK_NOT_READY;<br>
    } else if (ret == -1) {<br>
       /* We don't know the real error. */<br>
-      anv_device_set_lost(device, "gem wait failed: %m");<br>
-      return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                       "gem wait failed: %m");<br>
+      return anv_device_set_lost(device, "gem wait failed: %m");<br>
    }<br>
<br>
    /* Query for device status after the busy call.  If the BO we're checking<br>
@@ -2132,9 +2124,7 @@ anv_device_wait(struct anv_device *device, struct anv_bo *bo,<br>
       return VK_TIMEOUT;<br>
    } else if (ret == -1) {<br>
       /* We don't know the real error. */<br>
-      anv_device_set_lost(device, "gem wait failed: %m");<br>
-      return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                       "gem wait failed: %m");<br>
+      return anv_device_set_lost(device, "gem wait failed: %m");<br>
    }<br>
<br>
    /* Query for device status after the wait.  If the BO we're waiting on got<br>
@@ -3111,9 +3101,8 @@ VkResult anv_GetCalibratedTimestampsEXT(<br>
                                 &pTimestamps[d]);<br>
<br>
          if (ret != 0) {<br>
-            anv_device_set_lost(device, "Failed to get a timestamp");<br>
-            return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                             "Failed to read the TIMESTAMP register: %m");<br>
+            return anv_device_set_lost(device,<br>
+                                       "Failed to read the TIMESTAMP register: %m");<br>
          }<br>
          uint64_t device_period = DIV_ROUND_UP(1000000000, timestamp_frequency);<br>
          max_clock_period = MAX2(max_clock_period, device_period);<br>
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h<br>
index a3ab971b6fd8b2355933..30e02142dba5f77641ca 100644<br>
--- a/src/intel/vulkan/anv_private.h<br>
+++ b/src/intel/vulkan/anv_private.h<br>
@@ -1077,6 +1077,11 @@ void anv_device_finish_blorp(struct anv_device *device);<br>
<br>
 void anv_device_set_lost(struct anv_device *device,<br>
                          const char *msg, ...);<br>
+#define anv_device_set_lost(dev, msg, ...) \<br>
+   ({ \<br>
+      (anv_device_set_lost)(dev, msg, ##__VA_ARGS__); \<br>
+      vk_errorf(dev->instance, dev, VK_ERROR_DEVICE_LOST, msg, ##__VA_ARGS__); \<br>
+   })<br>
<br>
 static inline bool<br>
 anv_device_is_lost(struct anv_device *device)<br>
diff --git a/src/intel/vulkan/anv_queue.c b/src/intel/vulkan/anv_queue.c<br>
index 8e9f743fcb7a953a1f8f..6247ba8751e1fc3d2411 100644<br>
--- a/src/intel/vulkan/anv_queue.c<br>
+++ b/src/intel/vulkan/anv_queue.c<br>
@@ -42,9 +42,7 @@ anv_device_execbuf(struct anv_device *device,<br>
    int ret = device->no_hw ? 0 : anv_gem_execbuffer(device, execbuf);<br>
    if (ret != 0) {<br>
       /* We don't know the real error. */<br>
-      anv_device_set_lost(device, "execbuf2 failed: %m");<br>
-      return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                       "execbuf2 failed: %m");<br>
+      return anv_device_set_lost(device, "execbuf2 failed: %m");<br>
    }<br>
<br>
    struct drm_i915_gem_exec_object2 *objects =<br>
@@ -243,9 +241,7 @@ VkResult anv_QueueSubmit(<br>
        * VK_ERROR_DEVICE_LOST to ensure that clients do not attempt to<br>
        * submit the same job again to this device.<br>
        */<br>
-      result = vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                         "vkQueueSubmit() failed");<br>
-      anv_device_set_lost(device, "vkQueueSubmit() failed");<br>
+      result = anv_device_set_lost(device, "vkQueueSubmit() failed");<br>
    }<br>
<br>
    pthread_mutex_unlock(&device->mutex);<br>
@@ -438,9 +434,7 @@ VkResult anv_GetFenceStatus(<br>
             return VK_NOT_READY;<br>
          } else {<br>
             /* We don't know the real error. */<br>
-            anv_device_set_lost(device, "drm_syncobj_wait failed: %m");<br>
-            return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                             "drm_syncobj_wait failed: %m");<br>
+            return anv_device_set_lost(device, "drm_syncobj_wait failed: %m");<br>
          }<br>
       } else {<br>
          return VK_SUCCESS;<br>
@@ -526,9 +520,7 @@ anv_wait_for_syncobj_fences(struct anv_device *device,<br>
          return VK_TIMEOUT;<br>
       } else {<br>
          /* We don't know the real error. */<br>
-         anv_device_set_lost(device, "drm_syncobj_wait failed: %m");<br>
-         return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                          "drm_syncobj_wait failed: %m");<br>
+         return anv_device_set_lost(device, "drm_syncobj_wait failed: %m");<br>
       }<br>
    } else {<br>
       return VK_SUCCESS;<br>
diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c<br>
index 7dd9112d296228f1c7d5..ce8757f2643127a40c52 100644<br>
--- a/src/intel/vulkan/genX_query.c<br>
+++ b/src/intel/vulkan/genX_query.c<br>
@@ -181,9 +181,7 @@ wait_for_available(struct anv_device *device,<br>
          continue;<br>
       } else if (ret == -1) {<br>
          /* We don't know the real error. */<br>
-         anv_device_set_lost(device, "gem wait failed: %m");<br>
-         return vk_errorf(device->instance, device, VK_ERROR_DEVICE_LOST,<br>
-                          "gem wait failed: %m");<br>
+         return anv_device_set_lost(device, "gem wait failed: %m");<br>
       } else {<br>
          assert(ret == 0);<br>
          /* The BO is no longer busy. */<br>
-- <br>
Cheers,<br>
  Eric<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>