diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-26 12:54:13 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-27 10:25:36 +0100 |
commit | baf78fcddb87eba987163485ad8fd227fb244f29 (patch) | |
tree | fa1b4bec77552e6e7067ef2b0c793468a830cb42 | |
parent | ff4715a36999a43cee20cf3474b4ae0af646342c (diff) |
sna/gen2: Cache the last solid colour for spans
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/gen2_render.c | 8 | ||||
-rw-r--r-- | src/sna/sna_render.h | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index 440a343a..aa315e68 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -1593,8 +1593,11 @@ static void gen2_emit_composite_spans_state(struct sna *sna, gen2_emit_spans_pipeline(sna, op); if (op->base.src.is_solid) { - BATCH(_3DSTATE_DFLT_SPECULAR_CMD); - BATCH(op->base.src.u.gen2.pixel); + if (op->base.src.u.gen2.pixel != sna->render_state.gen2.specular) { + BATCH(_3DSTATE_DFLT_SPECULAR_CMD); + BATCH(op->base.src.u.gen2.pixel); + sna->render_state.gen2.specular = op->base.src.u.gen2.pixel; + } } else { uint32_t v =_3DSTATE_VERTEX_FORMAT_2_CMD | (op->base.src.is_affine ? TEXCOORDFMT_2D : TEXCOORDFMT_3D); @@ -2534,6 +2537,7 @@ gen2_render_reset(struct sna *sna) sna->render_state.gen2.vft = 0; sna->render_state.gen2.diffuse = 0x0c0ffee0; + sna->render_state.gen2.specular = 0x0c0ffee0; } static void diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h index d31b55c0..774c576a 100644 --- a/src/sna/sna_render.h +++ b/src/sna/sna_render.h @@ -275,8 +275,9 @@ struct gen2_render_state { Bool need_invariant; Bool logic_op_enabled; uint32_t ls1, ls2, vft; - uint16_t vertex_offset; uint32_t diffuse; + uint32_t specular; + uint16_t vertex_offset; }; struct gen3_render_state { |