i965/gen6/blorp: Set need_workaround_flush immediately after primitive
authorChad Versace <chad.versace@linux.intel.com>
Tue, 24 Dec 2013 01:46:51 +0000 (17:46 -0800)
committerChad Versace <chad.versace@linux.intel.com>
Thu, 9 Jan 2014 23:02:36 +0000 (15:02 -0800)
This patch makes the workaround code in gen6 blorp follow the pattern
established in the regular draw path. It shouldn't result in any
behavioral change.

On gen6, there are two places where we emit 3D_CMD_PRIM: brw_emit_prim()
and gen6_blorp_emit_primitive().  brw_emit_prim() sets
need_workaround_flush immediately after emitting the primitive, but
blorp does not. Blorp sets need_workaround_flush at the bottom of
brw_blorp_exec().

This patch moves the need_workaround_flush from brw_blorp_exec() to
gen6_blorp_emit_primitive().  There is no need to set
need_workaround_flush in gen7_blorp_emit_primitive() because the
workaround applies only to gen6.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
src/mesa/drivers/dri/i965/brw_blorp.cpp
src/mesa/drivers/dri/i965/gen6_blorp.cpp

index ab3e75c3b6ecc4c05240d5af6b556159885a86c8..0939a3178675500da7eb30ced8b563daffd48bf6 100644 (file)
@@ -274,7 +274,6 @@ retry:
     */
    brw->state.dirty.brw = ~0;
    brw->state.dirty.cache = ~0;
-   brw->batch.need_workaround_flush = true;
    brw->ib.type = -1;
    intel_batchbuffer_clear_cache(brw);
 
index 441d61fb018d7a78211b905c9a338bc2191a4c8e..929d7b5a6790dfe772b5e12c4897760186992ea1 100644 (file)
@@ -1010,6 +1010,9 @@ gen6_blorp_emit_primitive(struct brw_context *brw,
    OUT_BATCH(0);
    OUT_BATCH(0);
    ADVANCE_BATCH();
+
+   /* Only used on Sandybridge; harmless to set elsewhere. */
+   brw->batch.need_workaround_flush = true;
 }
 
 static void