Mesa (master): anv/device: Return DEVICE_LOST if execbuf2 fails

Jason Ekstrand jekstrand at kemper.freedesktop.org
Tue Nov 1 14:55:22 UTC 2016


Module: Mesa
Branch: master
Commit: c41ec1679f02d6705ceda49d9ad966d0d0833824
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c41ec1679f02d6705ceda49d9ad966d0d0833824

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Mon Oct 31 16:33:43 2016 -0700

anv/device: Return DEVICE_LOST if execbuf2 fails

This makes more sense than OUT_OF_HOST_MEMORY.  Technically, you can
recover from a failed execbuf2 but the batch you just submitted didn't
fully execute so things are in an ill-defined state.  The app doesn't want
to continue from that point anyway.

Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Cc: "13.0" <mesa-stable at lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/intel/vulkan/anv_device.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index c995630..37615ef 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -812,7 +812,7 @@ anv_device_submit_simple_batch(struct anv_device *device,
    ret = anv_gem_execbuffer(device, &execbuf);
    if (ret != 0) {
       /* We don't know the real error. */
-      result = vk_errorf(VK_ERROR_OUT_OF_DEVICE_MEMORY, "execbuf2 failed: %m");
+      result = vk_errorf(VK_ERROR_DEVICE_LOST, "execbuf2 failed: %m");
       goto fail;
    }
 
@@ -820,7 +820,7 @@ anv_device_submit_simple_batch(struct anv_device *device,
    ret = anv_gem_wait(device, bo.gem_handle, &timeout);
    if (ret != 0) {
       /* We don't know the real error. */
-      result = vk_errorf(VK_ERROR_OUT_OF_DEVICE_MEMORY, "execbuf2 failed: %m");
+      result = vk_errorf(VK_ERROR_DEVICE_LOST, "execbuf2 failed: %m");
       goto fail;
    }
 
@@ -1090,8 +1090,7 @@ VkResult anv_QueueSubmit(
          ret = anv_gem_execbuffer(device, &cmd_buffer->execbuf2.execbuf);
          if (ret != 0) {
             /* We don't know the real error. */
-            return vk_errorf(VK_ERROR_OUT_OF_DEVICE_MEMORY,
-                             "execbuf2 failed: %m");
+            return vk_errorf(VK_ERROR_DEVICE_LOST, "execbuf2 failed: %m");
          }
 
          for (uint32_t k = 0; k < cmd_buffer->execbuf2.bo_count; k++)
@@ -1103,8 +1102,7 @@ VkResult anv_QueueSubmit(
       ret = anv_gem_execbuffer(device, &fence->execbuf);
       if (ret != 0) {
          /* We don't know the real error. */
-         return vk_errorf(VK_ERROR_OUT_OF_DEVICE_MEMORY,
-                          "execbuf2 failed: %m");
+         return vk_errorf(VK_ERROR_DEVICE_LOST, "execbuf2 failed: %m");
       }
    }
 




More information about the mesa-commit mailing list