fixed front/back buffer stride problem for XF86DRI
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 25 Feb 2000 14:59:46 +0000 (14:59 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 25 Feb 2000 14:59:46 +0000 (14:59 +0000)
src/mesa/drivers/glide/fxdd.c

index 6fd6a1e69e184f6e69b509429b7dab43313d29cf..bc1e55a5fff1cf8a3e8a125e32c023bc7a2ee717 100644 (file)
@@ -446,8 +446,13 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
   {
     const GLint winX = fxMesa->x_offset;
     const GLint winY = fxMesa->y_offset + fxMesa->height - 1;
+    /* The dest stride depends on the hardware and whether we're drawing
+     * to the front or back buffer.  This compile-time test seems to do
+     * the job for now.
+     */
 #ifdef XF86DRI
-    const GLint dstStride = fxMesa->screen_width;
+    const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT)
+                          ? (fxMesa->screen_width) : (info.strideInBytes / 2);
 #else
     const GLint dstStride = info.strideInBytes / 2; /* stride in GLushorts */
 #endif