summaryrefslogtreecommitdiff
path: root/src/sna/gen7_render.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-06-21 09:36:42 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2012-06-21 20:32:39 +0100
commit3ef05a8d0833203e265aff392f225a11a11c2d01 (patch)
treec0a0a3c20aa3f0407ab3cfb29eb4c878db484c9d /src/sna/gen7_render.c
parent4501e131e6b737cb8f2581c8b1f7ea9d29a8e912 (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.c7
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);