Module: Mesa Branch: 9.1 Commit: f1c46c84189e548331e94f296530f98b5b002f10 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1c46c84189e548331e94f296530f98b5b002f10
Author: Marek Olšák <[email protected]> Date: Fri Feb 1 20:59:38 2013 +0100 r300g: fix blending with blend color and RGBA formats NOTE: This is a candidate for the stable branches. (cherry picked from commit f40a7fc34a601195191b1b2ffef55818a4086d5f) --- src/gallium/drivers/r300/r300_state.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index fd02f82..377b726 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -487,6 +487,7 @@ static void r300_set_blend_color(struct pipe_context* pipe, (struct r300_blend_color_state*)r300->blend_color_state.state; struct pipe_blend_color c; enum pipe_format format = fb->nr_cbufs ? fb->cbufs[0]->format : 0; + float tmp; CB_LOCALS; state->state = *color; /* Save it, so that we can reuse it in set_fb_state */ @@ -513,6 +514,13 @@ static void r300_set_blend_color(struct pipe_context* pipe, c.color[2] = c.color[3]; break; + case PIPE_FORMAT_R8G8B8A8_UNORM: + case PIPE_FORMAT_R8G8B8X8_UNORM: + tmp = c.color[0]; + c.color[0] = c.color[2]; + c.color[2] = tmp; + break; + default:; } } @@ -919,6 +927,9 @@ r300_set_framebuffer_state(struct pipe_context* pipe, /* Need to reset clamping or colormask. */ r300_mark_atom_dirty(r300, &r300->blend_state); + /* Re-swizzle the blend color. */ + r300_set_blend_color(pipe, &((struct r300_blend_color_state*)r300->blend_color_state.state)->state); + /* If zsbuf is set from NULL to non-NULL or vice versa.. */ if (!!old_state->zsbuf != !!state->zsbuf) { r300_mark_atom_dirty(r300, &r300->dsa_state); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
