Fixed bugs in Mesa software span rendering for color index modes
authorKendall Bennett <KendallB@scitechsoft.com>
Thu, 2 Oct 2003 23:50:44 +0000 (23:50 +0000)
committerKendall Bennett <KendallB@scitechsoft.com>
Thu, 2 Oct 2003 23:50:44 +0000 (23:50 +0000)
src/mesa/main/glheader.h
src/mesa/swrast/s_spantemp.h

index 86827324688d27072b36ea685690971f4537185a..0f93539a81bb866b419e7ecc1cdad91dc0bebb28 100644 (file)
@@ -278,7 +278,9 @@ typedef struct tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESC
 #endif
 
 
-#ifdef DEBUG
+#if defined(__SCITECH_SNAP__) && defined(CHECKED)
+#  define ASSERT(X)   _CHECK(X) 
+#elif defined(DEBUG)
 #  define ASSERT(X)   assert(X)
 #else
 #  define ASSERT(X)
index 3452b0b2842e015fed73e0cfea8b08b717f0d7d9..c48b35b90a8a0e2260be984df3e9d8ed0efcd2c2 100644 (file)
@@ -188,6 +188,7 @@ NAME(read_rgba_pixels)( const GLcontext *ctx,
    SPAN_VARS
 #endif
    GLuint i;
+   ASSERT(mask);
    for (i = 0; i < n; i++) {
       if (mask[i]) {
          INIT_PIXEL_PTR(pixel, x[i], y[i]);
@@ -221,9 +222,6 @@ NAME(write_index32_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
          INC_PIXEL_PTR(pixel);
       }
    }
-   else if (sizeof(*pixel) == sizeof(GLuint)) {
-      _mesa_memcpy(pixel, index, n * sizeof(GLuint));
-   }
    else {
       for (i = 0; i < n; i++) {
          STORE_CI_PIXEL(pixel, index[i]);
@@ -250,9 +248,6 @@ NAME(write_index8_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
          INC_PIXEL_PTR(pixel);
       }
    }
-   else if (sizeof(*pixel) == sizeof(GLubyte)) {
-      _mesa_memcpy(pixel, index, n * sizeof(GLubyte));
-   }
    else {
       for (i = 0; i < n; i++) {
          STORE_CI_PIXEL(pixel, index[i]);
@@ -271,12 +266,20 @@ NAME(write_monoindex_span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 #endif
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
-   for (i = 0; i < n; i++) {
-      if (mask[i]) {
+   if (mask) {
+      for (i = 0; i < n; i++) {
+         if (mask[i]) {
+            STORE_CI_PIXEL(pixel, colorIndex);
+         }
+         INC_PIXEL_PTR(pixel);
+      }
+   }      
+   else {
+      for (i = 0; i < n; i++) {
          STORE_CI_PIXEL(pixel, colorIndex);
+         INC_PIXEL_PTR(pixel);
       }
-      INC_PIXEL_PTR(pixel);
-   }
+   }      
 }
 
 
@@ -289,6 +292,7 @@ NAME(write_index_pixels)( const GLcontext *ctx,
    SPAN_VARS
 #endif
    GLuint i;
+   ASSERT(mask);
    for (i = 0; i < n; i++) {
       if (mask[i]) {
          INIT_PIXEL_PTR(pixel, x[i], y[i]);
@@ -307,6 +311,7 @@ NAME(write_monoindex_pixels)( const GLcontext *ctx,
    SPAN_VARS
 #endif
    GLuint i;
+   ASSERT(mask);
    for (i = 0; i < n; i++) {
       if (mask[i]) {
          INIT_PIXEL_PTR(pixel, x[i], y[i]);
@@ -341,6 +346,7 @@ NAME(read_index_pixels)( const GLcontext *ctx,
    SPAN_VARS
 #endif
    GLuint i;
+   ASSERT(mask);
    for (i = 0; i < n; i++) {
       if (mask[i] ) {
          INIT_PIXEL_PTR(pixel, x[i], y[i]);