mesa: use z32f_x24s8 struct in format pack/unpack code
authorBrian Paul <brianp@vmware.com>
Mon, 13 Feb 2012 17:06:54 +0000 (10:06 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 15 Feb 2012 21:08:50 +0000 (14:08 -0700)
And remove needless & 0xff in _mesa_pack_uint_24_8_depth_stencil_row().
As suggested by José.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/format_pack.c
src/mesa/main/format_unpack.c

index e20e361c842a3f64d82fc0d83f021761c6c350d8..ff08ac561121a4e21b4adab1d7ac0ff2f1cdfc87 100644 (file)
 #include "../../gallium/auxiliary/util/u_format_r11g11b10f.h"
 
 
+/** Helper struct for MESA_FORMAT_Z32_FLOAT_X24S8 */
+struct z32f_x24s8
+{
+   float z;
+   uint32_t x24s8;
+};
+
+
 typedef void (*pack_ubyte_rgba_row_func)(GLuint n,
                                          const GLubyte src[][4], void *dst);
 
@@ -2372,10 +2380,10 @@ _mesa_pack_float_z_row(gl_format format, GLuint n,
       break;
    case MESA_FORMAT_Z32_FLOAT_X24S8:
       {
-         GLfloat *d = ((GLfloat *) dst);
+         struct z32f_x24s8 *d = (struct z32f_x24s8 *) dst;
          GLuint i;
          for (i = 0; i < n; i++) {
-            d[i * 2] = src[i];
+            d[i].z = src[i];
          }
       }
       break;
@@ -2445,13 +2453,13 @@ _mesa_pack_uint_z_row(gl_format format, GLuint n,
       break;
    case MESA_FORMAT_Z32_FLOAT_X24S8:
       {
-         GLfloat *d = ((GLfloat *) dst);
+         struct z32f_x24s8 *d = (struct z32f_x24s8 *) dst;
          const GLdouble scale = 1.0 / (GLdouble) 0xffffffff;
          GLuint i;
          for (i = 0; i < n; i++) {
-            d[i * 2] = src[i] * scale;
-            assert(d[i * 2] >= 0.0f);
-            assert(d[i * 2] <= 1.0f);
+            d[i].z = src[i] * scale;
+            assert(d[i].z >= 0.0f);
+            assert(d[i].z <= 1.0f);
          }
       }
       break;
@@ -2495,10 +2503,10 @@ _mesa_pack_ubyte_stencil_row(gl_format format, GLuint n,
       break;
    case MESA_FORMAT_Z32_FLOAT_X24S8:
       {
-         GLuint *d = dst;
+         struct z32f_x24s8 *d = (struct z32f_x24s8 *) dst;
          GLuint i;
          for (i = 0; i < n; i++) {
-            d[i * 2 + 1] = src[i];
+            d[i].x24s8 = src[i];
          }
       }
       break;
@@ -2533,13 +2541,12 @@ _mesa_pack_uint_24_8_depth_stencil_row(gl_format format, GLuint n,
    case MESA_FORMAT_Z32_FLOAT_X24S8:
       {
          const GLdouble scale = 1.0 / (GLdouble) 0xffffff;
-         GLuint *destu = (GLuint *) dst;
-         GLfloat *destf = (GLfloat *) dst;
+         struct z32f_x24s8 *d = (struct z32f_x24s8 *) dst;
          GLint i;
          for (i = 0; i < n; i++) {
             GLfloat z = (src[i] >> 8) * scale;
-            destf[i * 2 + 0] = z;
-            destu[i * 2 + 1] = src[i] & 0xff;
+            d[i].z = z;
+            d[i].x24s8 = src[i];
          }
       }
       break;
index a484979e2a9804f1c64ccb51bf22cfd150bba53a..b00e01236b323660da68c5bc890882d8f77a6e29 100644 (file)
 #include "../../gallium/auxiliary/util/u_format_r11g11b10f.h"
 
 
+/** Helper struct for MESA_FORMAT_Z32_FLOAT_X24S8 */
+struct z32f_x24s8
+{
+   float z;
+   uint32_t x24s8;
+};
+
 
 /* Expand 1, 2, 3, 4, 5, 6-bit values to fill 8 bits */
 
@@ -2825,10 +2832,10 @@ unpack_float_z_Z32F(GLuint n, const void *src, GLfloat *dst)
 static void
 unpack_float_z_Z32X24S8(GLuint n, const void *src, GLfloat *dst)
 {
-   const GLfloat *s = ((const GLfloat *) src);
+   const struct z32f_x24s8 *s = (const struct z32f_x24s8 *) src;
    GLuint i;
    for (i = 0; i < n; i++) {
-      dst[i] = s[i * 2];
+      dst[i] = s[i].z;
    }
 }
 
@@ -2929,11 +2936,6 @@ unpack_uint_z_Z32_FLOAT(const void *src, GLuint *dst, GLuint n)
 static void
 unpack_uint_z_Z32_FLOAT_X24S8(const void *src, GLuint *dst, GLuint n)
 {
-   struct z32f_x24s8 {
-      float z;
-      uint32_t x24s8;
-   };
-
    const struct z32f_x24s8 *s = (const struct z32f_x24s8 *) src;
    GLuint i;
 
@@ -3015,10 +3017,10 @@ static void
 unpack_ubyte_s_Z32_FLOAT_X24S8(const void *src, GLubyte *dst, GLuint n)
 {
    GLuint i;
-   const GLuint *src32 = src;
+   const struct z32f_x24s8 *s = (const struct z32f_x24s8 *) src;
 
    for (i = 0; i < n; i++)
-      dst[i] = src32[i * 2 + 1] & 0xff;
+      dst[i] = s[i].x24s8 & 0xff;
 }
 
 void