iris: Handle batch submission failure "better"
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 23 Jun 2018 19:13:03 +0000 (12:13 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:07 +0000 (10:26 -0800)
We used to not reset the batch, and just keep appending to it, so you'd
get the same invalid contents over and over.

I'd also really like to know about this, so aborting seems wise for now,
if not for the long term

src/gallium/drivers/iris/iris_batch.c

index 9ed447d42e97df036cd72c31879817b703c1823a..497e37f12f665d54353d6be1458e9cea14121ca4 100644 (file)
@@ -457,15 +457,20 @@ _iris_batch_flush_fence(struct iris_batch *batch,
 
    //throttle(iris);
 
-   if (ret < 0)
-      return ret;
+   if (ret >= 0) {
+      //if (iris->ctx.Const.ResetStrategy == GL_LOSE_CONTEXT_ON_RESET_ARB)
+         //iris_check_for_reset(ice);
 
-   //if (iris->ctx.Const.ResetStrategy == GL_LOSE_CONTEXT_ON_RESET_ARB)
-      //iris_check_for_reset(ice);
-
-   if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) {
-      dbg_printf("waiting for idle\n");
-      iris_bo_wait_rendering(batch->bo);
+      if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) {
+         dbg_printf("waiting for idle\n");
+         iris_bo_wait_rendering(batch->bo);
+      }
+   } else {
+#ifdef DEBUG
+      fprintf(stderr, "iris: Failed to submit batchbuffer: %s\n",
+              strerror(-ret));
+      abort();
+#endif
    }
 
    /* Clean up after the batch we submitted and prepare for a new one. */