fixed alignment bug in _mesa_image_row_stride()
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 19 May 2000 22:35:44 +0000 (22:35 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 19 May 2000 22:35:44 +0000 (22:35 +0000)
src/mesa/main/image.c

index dc6abb39d7d8861e30087ca484e6889b41381d44..627ab1510e7b35fdc53b38c840272f43d56deeed 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: image.c,v 1.31 2000/05/10 14:39:53 brianp Exp $ */
+/* $Id: image.c,v 1.32 2000/05/19 22:35:44 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -519,16 +519,19 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,
    else {
       /* Non-BITMAP data */
       const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type);
+      GLint bytesPerRow, remainder;
       if (bytesPerPixel <= 0)
          return -1;  /* error */
       if (packing->RowLength == 0) {
-         GLint bytes = bytesPerPixel * width;
-         return bytes;
+         bytesPerRow = bytesPerPixel * width;
       }
       else {
-         GLint bytes = bytesPerPixel * packing->RowLength;
-         return bytes;
+         bytesPerRow = bytesPerPixel * packing->RowLength;
       }
+      remainder = bytesPerRow % packing->Alignment;
+      if (remainder > 0)
+         bytesPerRow += (packing->Alignment - remainder);
+      return bytesPerRow;
    }
 }