diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp.cpp | 19 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_blorp.cpp | 9 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_blorp.cpp | 9 |
3 files changed, 19 insertions, 18 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp b/src/mesa/drivers/dri/i965/brw_blorp.cpp index c60f4f15382..8a044c1a271 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.cpp +++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp @@ -21,6 +21,7 @@ * IN THE SOFTWARE. */ +#include "intel_batchbuffer.h" #include "intel_fbo.h" #include "brw_blorp.h" @@ -163,6 +164,8 @@ intel_hiz_exec(struct intel_context *intel, struct intel_mipmap_tree *mt, void brw_blorp_exec(struct intel_context *intel, const brw_blorp_params *params) { + struct brw_context *brw = brw_context(&intel->ctx); + switch (intel->gen) { case 6: gen6_blorp_exec(intel, params); @@ -175,6 +178,22 @@ brw_blorp_exec(struct intel_context *intel, const brw_blorp_params *params) assert(false); break; } + + if (unlikely(intel->always_flush_batch)) + intel_batchbuffer_flush(intel); + + /* We've smashed all state compared to what the normal 3D pipeline + * rendering tracks for GL. + */ + brw->state.dirty.brw = ~0; + brw->state.dirty.cache = ~0; + brw->state_batch_count = 0; + intel->batch.need_workaround_flush = true; + + /* Flush the sampler cache so any texturing from the destination is + * coherent. + */ + intel_batchbuffer_emit_mi_flush(intel); } brw_hiz_op_params::brw_hiz_op_params(struct intel_mipmap_tree *mt, diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp b/src/mesa/drivers/dri/i965/gen6_blorp.cpp index b6fbd44d3b6..872c408f28c 100644 --- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp +++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp @@ -1093,14 +1093,5 @@ gen6_blorp_exec(struct intel_context *intel, gen6_blorp_emit_clear_params(brw, params); gen6_blorp_emit_drawing_rectangle(brw, params); gen6_blorp_emit_primitive(brw, params); - - /* See comments above at first invocation of intel_flush() in - * gen6_blorp_emit_batch_head(). - */ - intel_flush(ctx); - - /* Be safe. */ - brw->state.dirty.brw = ~0; - brw->state.dirty.cache = ~0; } diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp b/src/mesa/drivers/dri/i965/gen7_blorp.cpp index 290ad359cf7..99e7e58cd93 100644 --- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp +++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp @@ -807,13 +807,4 @@ gen7_blorp_exec(struct intel_context *intel, gen7_blorp_emit_clear_params(brw, params); gen6_blorp_emit_drawing_rectangle(brw, params); gen7_blorp_emit_primitive(brw, params); - - /* See comments above at first invocation of intel_flush() in - * gen6_blorp_emit_batch_head(). - */ - intel_flush(ctx); - - /* Be safe. */ - brw->state.dirty.brw = ~0; - brw->state.dirty.cache = ~0; } |