mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-16 08:40:29 +01:00
swrast: fix span color array pointer assignment for 32-bit/channel rendering
See fd.o bug 29487. NOTE: This is a candidate for the 7.8 branch. Signed-off-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
ca5227ce8b
commit
c8e714df01
1 changed files with 17 additions and 0 deletions
|
|
@ -970,6 +970,10 @@ shade_texture_span(GLcontext *ctx, SWspan *span)
|
|||
if (span->primitive == GL_BITMAP && span->array->ChanType != GL_FLOAT) {
|
||||
convert_color_type(span, GL_FLOAT, 0);
|
||||
}
|
||||
else {
|
||||
span->array->rgba = (void *) span->array->attribs[FRAG_ATTRIB_COL0];
|
||||
}
|
||||
|
||||
if (span->primitive != GL_POINT ||
|
||||
(span->interpMask & SPAN_RGBA) ||
|
||||
ctx->Point.PointSprite) {
|
||||
|
|
@ -1221,9 +1225,22 @@ _swrast_write_rgba_span( GLcontext *ctx, SWspan *span)
|
|||
GLchan rgbaSave[MAX_WIDTH][4];
|
||||
const GLuint fragOutput = multiFragOutputs ? buf : 0;
|
||||
|
||||
/* set span->array->rgba to colors for render buffer's datatype */
|
||||
if (rb->DataType != span->array->ChanType || fragOutput > 0) {
|
||||
convert_color_type(span, rb->DataType, fragOutput);
|
||||
}
|
||||
else {
|
||||
if (rb->DataType == GL_UNSIGNED_BYTE) {
|
||||
span->array->rgba = span->array->rgba8;
|
||||
}
|
||||
else if (rb->DataType == GL_UNSIGNED_SHORT) {
|
||||
span->array->rgba = (void *) span->array->rgba16;
|
||||
}
|
||||
else {
|
||||
span->array->rgba = (void *)
|
||||
span->array->attribs[FRAG_ATTRIB_COL0];
|
||||
}
|
||||
}
|
||||
|
||||
if (!multiFragOutputs && numBuffers > 1) {
|
||||
/* save colors for second, third renderbuffer writes */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue