mesa: implement texfetch functions for depth_buffer_float
authorMarek Olšák <maraeo@gmail.com>
Mon, 20 Jun 2011 01:07:16 +0000 (03:07 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sun, 10 Jul 2011 19:41:16 +0000 (21:41 +0200)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/texfetch.c
src/mesa/main/texfetch_tmp.h

index 4b85bc32a926e85c885b54cd4c8f2895b85e4f79..72283eb68af96bd9e3c66d7055400928341889a1 100644 (file)
@@ -916,17 +916,17 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
    },
    {
       MESA_FORMAT_Z32_FLOAT,
-      NULL, /* XXX */
-      NULL,
-      NULL,
-      NULL
+      fetch_texel_1d_f_r_f32, /* Reuse the R32F functions. */
+      fetch_texel_2d_f_r_f32,
+      fetch_texel_3d_f_r_f32,
+      store_texel_r_f32
    },
    {
       MESA_FORMAT_Z32_FLOAT_X24S8,
-      NULL, /* XXX */
-      NULL,
-      NULL,
-      NULL
+      fetch_texel_1d_z32f_x24s8,
+      fetch_texel_2d_z32f_x24s8,
+      fetch_texel_3d_z32f_x24s8,
+      store_texel_z32f_x24s8
    }
 };
 
index e6fd81d4d5773cf9289092617b216359591ffcfb..3b1eedf39bfffbe57b086d34f816d6f5cb0a8148 100644 (file)
@@ -2374,6 +2374,29 @@ static void store_texel_r11_g11_b10f(struct gl_texture_image *texImage,
 #endif
 
 
+/* MESA_FORMAT_Z32_FLOAT_X24S8 ***********************************************/
+
+static void FETCH(z32f_x24s8)(const struct gl_texture_image *texImage,
+                             GLint i, GLint j, GLint k, GLfloat *texel)
+{
+   const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2);
+   texel[RCOMP] = src[0];
+   texel[GCOMP] = 0.0F;
+   texel[BCOMP] = 0.0F;
+   texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_z32f_x24s8(struct gl_texture_image *texImage,
+                                   GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLfloat *src = (const GLfloat *) texel;
+   GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2);
+   dst[0] = src[0];
+}
+#endif
+
+
 #undef TEXEL_ADDR
 #undef DIM
 #undef FETCH