mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 04:10:09 +01:00
softpipe: When doing write_all_cbufs, don't stomp over the color.
We have to make it through this loop processing the color multiple times, so we can't go overwriting it on our first color buffer. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
e4fdc95277
commit
f79e3518b4
1 changed files with 12 additions and 4 deletions
|
|
@ -817,17 +817,25 @@ blend_fallback(struct quad_stage *qs,
|
|||
quads[0]->input.y0);
|
||||
boolean has_dst_alpha
|
||||
= util_format_has_alpha(softpipe->framebuffer.cbufs[cbuf]->format);
|
||||
uint q, i, j, qbuf;
|
||||
|
||||
qbuf = write_all ? 0 : cbuf;
|
||||
uint q, i, j;
|
||||
|
||||
for (q = 0; q < nr; q++) {
|
||||
struct quad_header *quad = quads[q];
|
||||
float (*quadColor)[4];
|
||||
float temp_quad_color[QUAD_SIZE][4];
|
||||
const int itx = (quad->input.x0 & (TILE_SIZE-1));
|
||||
const int ity = (quad->input.y0 & (TILE_SIZE-1));
|
||||
|
||||
quadColor = quad->output.color[qbuf];
|
||||
if (write_all) {
|
||||
for (j = 0; j < QUAD_SIZE; j++) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
temp_quad_color[i][j] = quad->output.color[0][i][j];
|
||||
}
|
||||
}
|
||||
quadColor = temp_quad_color;
|
||||
} else {
|
||||
quadColor = quad->output.color[cbuf];
|
||||
}
|
||||
|
||||
/* get/swizzle dest colors
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue