sna/gen2: Cache the last solid colour for spans

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2011-10-26 12:54:13 +01:00
parent ff4715a369
commit baf78fcddb
2 changed files with 8 additions and 3 deletions

View File

@ -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

View File

@ -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 {