diff options
Diffstat (limited to 'src/sna/gen2_render.c')
-rw-r--r-- | src/sna/gen2_render.c | 8 |
1 files changed, 6 insertions, 2 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 |