summaryrefslogtreecommitdiff
path: root/src/mesa/swrast
diff options
context:
space:
mode:
authorBrian <brian@i915.localnet.net>2007-06-21 16:04:02 -0600
committerBrian <brian@i915.localnet.net>2007-06-21 16:06:27 -0600
commit93becd8a18f6ccf2f86e506ee36fc0bb75787c29 (patch)
tree060f14d0719fab2b1f00aa57755241ac7160239b /src/mesa/swrast
parented5ed6fe2f64f45eb3a43f9c57037d9e9b7fa5ea (diff)
fix rgba pointer bug hit on zoomed+fogged glDrawPixels
Diffstat (limited to 'src/mesa/swrast')
-rw-r--r--src/mesa/swrast/s_span.c7
-rw-r--r--src/mesa/swrast/s_zoom.c17
2 files changed, 12 insertions, 12 deletions
diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c
index 431629efb1..9777391ded 100644
--- a/src/mesa/swrast/s_span.c
+++ b/src/mesa/swrast/s_span.c
@@ -1150,6 +1150,7 @@ convert_color_type(SWspan *span, GLenum newType, GLuint output)
span->end, span->array->mask);
span->array->ChanType = newType;
+ span->array->rgba = dst;
}
@@ -1234,7 +1235,8 @@ _swrast_write_rgba_span( GLcontext *ctx, SWspan *span)
const GLbitfield origInterpMask = span->interpMask;
const GLbitfield origArrayMask = span->arrayMask;
const GLbitfield origArrayAttribs = span->arrayAttribs;
- const GLenum chanType = span->array->ChanType;
+ const GLenum origChanType = span->array->ChanType;
+ void * const origRgba = span->array->rgba;
const GLboolean shader = (ctx->FragmentProgram._Current
|| ctx->ATIFragmentShader._Enabled);
const GLboolean shaderOrTexture = shader || ctx->Texture._EnabledUnits;
@@ -1456,7 +1458,8 @@ end:
span->interpMask = origInterpMask;
span->arrayMask = origArrayMask;
span->arrayAttribs = origArrayAttribs;
- span->array->ChanType = chanType;
+ span->array->ChanType = origChanType;
+ span->array->rgba = origRgba;
}
diff --git a/src/mesa/swrast/s_zoom.c b/src/mesa/swrast/s_zoom.c
index 1ab5911f2f..ab02e3fbb3 100644
--- a/src/mesa/swrast/s_zoom.c
+++ b/src/mesa/swrast/s_zoom.c
@@ -153,16 +153,13 @@ zoom_span( GLcontext *ctx, GLint imgX, GLint imgY, const SWspan *span,
zoomed.end = zoomedWidth;
zoomed.array = &zoomed_arrays;
zoomed_arrays.ChanType = span->array->ChanType;
- /* XXX temporary */
-#if CHAN_TYPE == GL_UNSIGNED_BYTE
- zoomed_arrays.rgba = zoomed_arrays.rgba8;
-#elif CHAN_TYPE == GL_UNSIGNED_SHORT
- zoomed_arrays.rgba = zoomed_arrays.rgba16;
-#else
- zoomed_arrays.rgba = zoomed_arrays.attribs[FRAG_ATTRIB_COL0];
-#endif
-
- /* copy attribute info (XXX copy all attribs?) */
+ if (zoomed_arrays.ChanType == GL_UNSIGNED_BYTE)
+ zoomed_arrays.rgba = (GLchan (*)[4]) zoomed_arrays.rgba8;
+ else if (zoomed_arrays.ChanType == GL_UNSIGNED_SHORT)
+ zoomed_arrays.rgba = (GLchan (*)[4]) zoomed_arrays.rgba16;
+ else
+ zoomed_arrays.rgba = (GLchan (*)[4]) zoomed_arrays.attribs[FRAG_ATTRIB_COL0];
+
COPY_4V(zoomed.attrStart[FRAG_ATTRIB_WPOS], span->attrStart[FRAG_ATTRIB_WPOS]);
COPY_4V(zoomed.attrStepX[FRAG_ATTRIB_WPOS], span->attrStepX[FRAG_ATTRIB_WPOS]);
COPY_4V(zoomed.attrStepY[FRAG_ATTRIB_WPOS], span->attrStepY[FRAG_ATTRIB_WPOS]);