<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello,<br><br>I tested this patch few times and have the following results:<br><a href="https://mesa-ci.01.org/global_logic/builds/38/group/63a9f0ea7bb98050796b649e85481845">https://mesa-ci.01.org/global_logic/builds/38/group/63a9f0ea7bb98050796b649e85481845</a><br><a href="https://mesa-ci.01.org/global_logic/builds/41/group/63a9f0ea7bb98050796b649e85481845">https://mesa-ci.01.org/global_logic/builds/41/group/63a9f0ea7bb98050796b649e85481845</a><br><a href="https://mesa-ci.01.org/global_logic/builds/43/group/63a9f0ea7bb98050796b649e85481845">https://mesa-ci.01.org/global_logic/builds/43/group/63a9f0ea7bb98050796b649e85481845</a><br><br>All test runs are finished with the following issue on G965:<br><br><a href="https://mesa-ci.01.org/global_logic/builds/38/results/46496330">https://mesa-ci.01.org/global_logic/builds/38/results/46496330</a><br>ext_framebuffer_multisample-accuracy all_samples srgb small depthstencil linear -auto -fbo<br></div><div dir="ltr">....<br></div><div dir="ltr">ERROR: This test passed when it expected failure<br></div><div dir="ltr"><br>Note: Also I checked latest mesa master few times and there was no regression:</div><div dir="ltr">         <a href="https://mesa-ci.01.org/global_logic/builds/42/group/63a9f0ea7bb98050796b649e85481845">https://mesa-ci.01.org/global_logic/builds/42/group/63a9f0ea7bb98050796b649e85481845</a><br></div><div dir="ltr"><br>Regards,<div>Andrii.<br></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Nov 5, 2018 at 9:48 AM <<a href="mailto:asimiklit.work@gmail.com">asimiklit.work@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From: Andrii Simiklit <<a href="mailto:andrii.simiklit@globallogic.com" target="_blank">andrii.simiklit@globallogic.com</a>><br>
<br>
There's no point reverting to the last saved point if that save point is<br>
the empty batch, we will just repeat ourselves.<br>
<br>
v2: Merge with new commits, changes was minimized, added the 'fixes' tag<br>
v3: Added in to patch series<br>
v4: Fixed the regression which was introduced by this patch<br>
    Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=108630" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=108630</a><br>
    Reported-by:  Mark Janes <<a href="mailto:mark.a.janes@intel.com" target="_blank">mark.a.janes@intel.com</a>><br>
    The solution provided by: Jordan Justen <<a href="mailto:jordan.l.justen@intel.com" target="_blank">jordan.l.justen@intel.com</a>><br>
<br>
CC: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk" target="_blank">chris@chris-wilson.co.uk</a>><br>
Fixes: 3faf56ffbdeb "intel: Add an interface for saving/restoring<br>
                     the batchbuffer state."<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=107626" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=107626</a><br>
Signed-off-by: Andrii Simiklit <<a href="mailto:andrii.simiklit@globallogic.com" target="_blank">andrii.simiklit@globallogic.com</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_compute.c       | 3 ++-<br>
 src/mesa/drivers/dri/i965/brw_draw.c          | 3 ++-<br>
 src/mesa/drivers/dri/i965/genX_blorp_exec.c   | 1 +<br>
 src/mesa/drivers/dri/i965/intel_batchbuffer.c | 7 +++++++<br>
 src/mesa/drivers/dri/i965/intel_batchbuffer.h | 1 +<br>
 5 files changed, 13 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/brw_compute.c b/src/mesa/drivers/dri/i965/brw_compute.c<br>
index de08fc3ac1..5c8e3a5d4d 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_compute.c<br>
+++ b/src/mesa/drivers/dri/i965/brw_compute.c<br>
@@ -167,7 +167,7 @@ static void<br>
 brw_dispatch_compute_common(struct gl_context *ctx)<br>
 {<br>
    struct brw_context *brw = brw_context(ctx);<br>
-   bool fail_next = false;<br>
+   bool fail_next;<br>
<br>
    if (!_mesa_check_conditional_render(ctx))<br>
       return;<br>
@@ -185,6 +185,7 @@ brw_dispatch_compute_common(struct gl_context *ctx)<br>
    intel_batchbuffer_require_space(brw, 600);<br>
    brw_require_statebuffer_space(brw, 2500);<br>
    intel_batchbuffer_save_state(brw);<br>
+   fail_next = intel_batchbuffer_saved_state_is_empty(brw);<br>
<br>
  retry:<br>
    brw->batch.no_wrap = true;<br>
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c<br>
index 8536c04010..19ee3962d7 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_draw.c<br>
+++ b/src/mesa/drivers/dri/i965/brw_draw.c<br>
@@ -885,7 +885,7 @@ brw_draw_single_prim(struct gl_context *ctx,<br>
 {<br>
    struct brw_context *brw = brw_context(ctx);<br>
    const struct gen_device_info *devinfo = &brw->screen->devinfo;<br>
-   bool fail_next = false;<br>
+   bool fail_next;<br>
<br>
    /* Flag BRW_NEW_DRAW_CALL on every draw.  This allows us to have<br>
     * atoms that happen on every draw call.<br>
@@ -898,6 +898,7 @@ brw_draw_single_prim(struct gl_context *ctx,<br>
    intel_batchbuffer_require_space(brw, 1500);<br>
    brw_require_statebuffer_space(brw, 2400);<br>
    intel_batchbuffer_save_state(brw);<br>
+   fail_next = intel_batchbuffer_saved_state_is_empty(brw);<br>
<br>
    if (brw->num_instances != prim->num_instances ||<br>
        brw->basevertex != prim->basevertex ||<br>
diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c<br>
index 34bfcad03e..a62b88e166 100644<br>
--- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c<br>
+++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c<br>
@@ -309,6 +309,7 @@ retry:<br>
    intel_batchbuffer_require_space(brw, 1400);<br>
    brw_require_statebuffer_space(brw, 600);<br>
    intel_batchbuffer_save_state(brw);<br>
+   check_aperture_failed_once |= intel_batchbuffer_saved_state_is_empty(brw);<br>
    brw->batch.no_wrap = true;<br>
<br>
 #if GEN_GEN == 6<br>
diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c<br>
index 8b769eaf53..6207de5a06 100644<br>
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c<br>
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c<br>
@@ -301,6 +301,13 @@ intel_batchbuffer_save_state(struct brw_context *brw)<br>
    brw->batch.saved.exec_count = brw->batch.exec_count;<br>
 }<br>
<br>
+bool<br>
+intel_batchbuffer_saved_state_is_empty(struct brw_context *brw)<br>
+{<br>
+   struct intel_batchbuffer *batch = &brw->batch;<br>
+   return (batch->saved.map_next == batch->batch.map);<br>
+}<br>
+<br>
 void<br>
 intel_batchbuffer_reset_to_saved(struct brw_context *brw)<br>
 {<br>
diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.h b/src/mesa/drivers/dri/i965/intel_batchbuffer.h<br>
index 0632142cd3..91720dad5b 100644<br>
--- a/src/mesa/drivers/dri/i965/intel_batchbuffer.h<br>
+++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.h<br>
@@ -24,6 +24,7 @@ struct intel_batchbuffer;<br>
 void intel_batchbuffer_init(struct brw_context *brw);<br>
 void intel_batchbuffer_free(struct intel_batchbuffer *batch);<br>
 void intel_batchbuffer_save_state(struct brw_context *brw);<br>
+bool intel_batchbuffer_saved_state_is_empty(struct brw_context *brw);<br>
 void intel_batchbuffer_reset_to_saved(struct brw_context *brw);<br>
 void intel_batchbuffer_require_space(struct brw_context *brw, GLuint sz);<br>
 int _intel_batchbuffer_flush_fence(struct brw_context *brw,<br>
-- <br>
2.17.1<br>
<br>
</blockquote></div></div></div></div></div></div></div></div></div>