From a48d767cf2ec82d0c0f893a22d22e8593901b206 Mon Sep 17 00:00:00 2001 From: Brian Date: Thu, 12 Jul 2007 14:13:48 -0600 Subject: Add a quad 'bufloop' stage to handle glDrawBuffer(GL_FRONT_AND_BACK). This removes the notion of multiple color buffers from all other stages. Will need a bit more work when shaders with multiple render targets arrive. --- src/mesa/pipe/softpipe/sp_quad_output.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'src/mesa/pipe/softpipe/sp_quad_output.c') diff --git a/src/mesa/pipe/softpipe/sp_quad_output.c b/src/mesa/pipe/softpipe/sp_quad_output.c index e898757a06..12ab1eca1c 100644 --- a/src/mesa/pipe/softpipe/sp_quad_output.c +++ b/src/mesa/pipe/softpipe/sp_quad_output.c @@ -65,28 +65,21 @@ static void output_quad(struct quad_stage *qs, struct quad_header *quad) { struct softpipe_context *softpipe = qs->softpipe; - GLuint i; + struct softpipe_surface *sps = softpipe_surface(softpipe->cbuf); - for (i = 0; i < softpipe->framebuffer.num_cbufs; i++) { - struct softpipe_surface *sps - = softpipe_surface(softpipe->framebuffer.cbufs[i]); + if (quad->mask != MASK_ALL) { + GLfloat tmp[4][QUAD_SIZE]; - if (quad->mask != MASK_ALL) { - GLfloat tmp[4][QUAD_SIZE]; + /* XXX probably add a masked-write function someday */ - /* Yes, we'll probably have a masked write as well, but this is - * how blend will be done at least. - */ + sps->read_quad_f_swz(sps, quad->x0, quad->y0, tmp); - sps->read_quad_f_swz(sps, quad->x0, quad->y0, tmp); + mask_copy( tmp, quad->outputs.color, quad->mask ); - mask_copy( tmp, quad->outputs.color, quad->mask ); - - sps->write_quad_f_swz(sps, quad->x0, quad->y0, tmp); - } - else { - sps->write_quad_f_swz(sps, quad->x0, quad->y0, quad->outputs.color); - } + sps->write_quad_f_swz(sps, quad->x0, quad->y0, tmp); + } + else if (quad->mask) { + sps->write_quad_f_swz(sps, quad->x0, quad->y0, quad->outputs.color); } } @@ -100,4 +93,3 @@ struct quad_stage *sp_quad_output_stage( struct softpipe_context *softpipe ) return stage; } - -- cgit v1.2.3