diff options
| author | Brian Paul <brianp@vmware.com> | 2010-04-05 11:00:52 -0600 | 
|---|---|---|
| committer | Brian Paul <brianp@vmware.com> | 2010-04-05 11:00:54 -0600 | 
| commit | 0eea33b0696cee2cdea1e63a1714cec267d9b990 (patch) | |
| tree | b53ccca8b47bb54f33e184e5fc0e47e77082c7dc /src/gallium/drivers | |
| parent | 1ad1a51f140fcf6eba5a976f01e74e33d2b661d4 (diff) | |
softpipe: index the correct blend/mask state index
Need to check pipe_blend_state::independent_blend_enable to determine
which render target/index to use when checking blend enable and colormask
state.
This is part of the fix for piglit/fbo-drawbuffers
Diffstat (limited to 'src/gallium/drivers')
| -rw-r--r-- | src/gallium/drivers/softpipe/sp_quad_blend.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/src/gallium/drivers/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c index d65307b7f6..ead489393e 100644 --- a/src/gallium/drivers/softpipe/sp_quad_blend.c +++ b/src/gallium/drivers/softpipe/sp_quad_blend.c @@ -744,6 +744,8 @@ blend_fallback(struct quad_stage *qs,     for (cbuf = 0; cbuf < softpipe->framebuffer.nr_cbufs; cbuf++)      { +      /* which blend/mask state index to use: */ +      const uint blend_buf = blend->independent_blend_enable ? cbuf : 0;        float dest[4][QUAD_SIZE];        struct softpipe_cached_tile *tile           = sp_get_cached_tile(softpipe->cbuf_cache[cbuf], @@ -771,11 +773,11 @@ blend_fallback(struct quad_stage *qs,           if (blend->logicop_enable) {              logicop_quad( qs, quadColor, dest );           } -         else if (blend->rt[cbuf].blend_enable) { +         else if (blend->rt[blend_buf].blend_enable) {              blend_quad( qs, quadColor, dest, cbuf );           } -         if (blend->rt[cbuf].colormask != 0xf) +         if (blend->rt[blend_buf].colormask != 0xf)              colormask_quad( blend->rt[cbuf].colormask, quadColor, dest);           /* Output color values | 
