Nicolai's sw-clipspan-fixes.patch
authorKeith Whitwell <keith@tungstengraphics.com>
Mon, 1 Nov 2004 20:27:43 +0000 (20:27 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 1 Nov 2004 20:27:43 +0000 (20:27 +0000)
src/mesa/drivers/dri/common/depthtmp.h
src/mesa/drivers/dri/common/stenciltmp.h

index d8b8775ae99768348d5efb006c0deb1ee67ac105..ec79aca30f72cc2a024580d74522367d36cc9cd9 100644 (file)
@@ -45,15 +45,15 @@ static void TAG(WriteDepthSpan)( GLcontext *ctx,
               GLint i = 0;
               CLIPSPAN( x, y, n, x1, n1, i );
 
-              if ( DBG ) fprintf( stderr, "WriteDepthSpan %d..%d (x1 %d)\n",
-                                  (int)i, (int)n1, (int)x1 );
+              if ( DBG ) fprintf( stderr, "WriteDepthSpan %d..%d (x1 %d) (mask %p)\n",
+                                  (int)i, (int)n1, (int)x1, mask );
 
               if ( mask ) {
-                 for ( ; i < n1 ; i++, x1++ ) {
+                 for ( ; n1>0 ; i++, x1++, n1-- ) {
                     if ( mask[i] ) WRITE_DEPTH( x1, y, depth[i] );
                  }
               } else {
-                 for ( ; i < n1 ; i++, x1++ ) {
+                 for ( ; n1>0 ; i++, x1++, n1-- ) {
                     WRITE_DEPTH( x1, y, depth[i] );
                  }
               }
@@ -87,11 +87,11 @@ static void TAG(WriteMonoDepthSpan)( GLcontext *ctx,
                                   __FUNCTION__, (int)i, (int)n1, (int)x1, (GLuint)depth );
 
               if ( mask ) {
-                 for ( ; i < n1 ; i++, x1++ ) {
+                 for ( ; n1>0 ; i++, x1++, n1-- ) {
                     if ( mask[i] ) WRITE_DEPTH( x1, y, depth );
                  }
               } else {
-                 for ( ; i < n1 ; i++, x1++ ) {
+                 for ( ; n1>0 ; x1++, n1-- ) {
                     WRITE_DEPTH( x1, y, depth );
                  }
               }
@@ -162,8 +162,9 @@ static void TAG(ReadDepthSpan)( GLcontext *ctx,
            {
               GLint i = 0;
               CLIPSPAN( x, y, n, x1, n1, i );
-              for ( ; i < n1 ; i++ )
-                 READ_DEPTH( depth[i], (x1+i), y );
+              for ( ; n1>0 ; i++, n1-- ) {
+                 READ_DEPTH( depth[i], x+i, y );
+              }
            }
         HW_ENDCLIPLOOP();
 #endif
index 365e9811ac3457c78bdf84e253238d2a416fa37c..285d8e5291731d1fedd3850839fbc15d520efb97 100644 (file)
@@ -41,13 +41,13 @@ static void TAG(WriteStencilSpan)( GLcontext *ctx,
 
               if (mask)
               {
-                 for (;i<n1;i++,x1++)
+                 for (;n1>0;i++,x1++,n1--)
                     if (mask[i])
                        WRITE_STENCIL( x1, y, stencil[i] );
               }
               else
               {
-                 for (;i<n1;i++,x1++)
+                 for (;n1>0;i++,x1++,n1--)
                     WRITE_STENCIL( x1, y, stencil[i] );
               }
            }
@@ -107,8 +107,8 @@ static void TAG(ReadStencilSpan)( GLcontext *ctx,
            {
               GLint i = 0;
               CLIPSPAN(x,y,n,x1,n1,i);
-              for (;i<n1;i++)
-                 READ_STENCIL( stencil[i], (x1+i), y );
+              for (;n1>0;i++,n1--)
+                 READ_STENCIL( stencil[i], (x+i), y );
            }
         HW_ENDCLIPLOOP();
       }