Mesa (7.8): swrast: fix span color array pointer assignment for 32-bit/ channel rendering
Brian Paul
brianp at kemper.freedesktop.org
Tue Aug 24 14:31:54 UTC 2010
Module: Mesa
Branch: 7.8
Commit: 435474e116199a7f68b96e869108a68936e824ba
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=435474e116199a7f68b96e869108a68936e824ba
Author: M.Froehlich at science-computing.de <M.Froehlich at science-computing.de>
Date: Tue Aug 10 21:19:46 2010 -0600
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 at vmware.com>
---
src/mesa/swrast/s_span.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c
index 687c8eb..32d4f52 100644
--- a/src/mesa/swrast/s_span.c
+++ b/src/mesa/swrast/s_span.c
@@ -971,6 +971,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) {
@@ -1222,9 +1226,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 */
More information about the mesa-commit
mailing list