diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-06-21 09:36:42 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-06-21 20:32:39 +0100 |
commit | 3ef05a8d0833203e265aff392f225a11a11c2d01 (patch) | |
tree | c0a0a3c20aa3f0407ab3cfb29eb4c878db484c9d /src/sna/gen7_render.c | |
parent | 4501e131e6b737cb8f2581c8b1f7ea9d29a8e912 (diff) |
sna/gen7: Do not emit a pipeline stall after a non-pipelined command
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/gen7_render.c')
-rw-r--r-- | src/sna/gen7_render.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index e3c82699..b0f7cfcd 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -850,7 +850,7 @@ gen7_emit_binding_table(struct sna *sna, uint16_t offset) return true; } -static void +static bool gen7_emit_drawing_rectangle(struct sna *sna, const struct sna_composite_op *op) { @@ -862,7 +862,7 @@ gen7_emit_drawing_rectangle(struct sna *sna, if (sna->render_state.gen7.drawrect_limit == limit && sna->render_state.gen7.drawrect_offset == offset) - return; + return true; sna->render_state.gen7.drawrect_offset = offset; sna->render_state.gen7.drawrect_limit = limit; @@ -871,6 +871,7 @@ gen7_emit_drawing_rectangle(struct sna *sna, OUT_BATCH(0); OUT_BATCH(limit); OUT_BATCH(offset); + return false; } static void @@ -1016,7 +1017,7 @@ gen7_emit_state(struct sna *sna, gen7_emit_vertex_elements(sna, op); need_stall |= gen7_emit_binding_table(sna, wm_binding_table); - gen7_emit_drawing_rectangle(sna, op); + need_stall &= gen7_emit_drawing_rectangle(sna, op); if (kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo)) { gen7_emit_pipe_invalidate(sna); |