mesa/st: Generates TGSI that always recognizes INSTANCEID/VERTEXID as integers.
[mesa.git] / src / mesa / swrast / s_texfetch.c
index ab7cfb50f946990bc3380c57b7b351998a5b3b2a..8529ff08db3d257fa49c7a93a50fef0c1a564fa3 100644 (file)
@@ -39,6 +39,7 @@
 #include "main/texcompress_fxt1.h"
 #include "main/texcompress_s3tc.h"
 #include "main/texcompress_rgtc.h"
+#include "main/texcompress_etc.h"
 #include "main/teximage.h"
 #include "s_context.h"
 #include "s_texfetch.h"
@@ -102,18 +103,6 @@ static void fetch_null_texelf( const struct swrast_texture_image *texImage,
    _mesa_warning(NULL, "fetch_null_texelf() called!");
 }
 
-static void store_null_texel(struct swrast_texture_image *texImage,
-                             GLint i, GLint j, GLint k, const void *texel)
-{
-   (void) texImage;
-   (void) i;
-   (void) j;
-   (void) k;
-   (void) texel;
-   /* no-op */
-}
-
-
 
 /**
  * Table to map MESA_FORMAT_ to texel fetch/store funcs.
@@ -124,7 +113,6 @@ static struct {
    FetchTexelFunc Fetch1D;
    FetchTexelFunc Fetch2D;
    FetchTexelFunc Fetch3D;
-   StoreTexelFunc StoreTexel;
 }
 texfetch_funcs[MESA_FORMAT_COUNT] =
 {
@@ -132,386 +120,331 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_NONE,
       fetch_null_texelf,
       fetch_null_texelf,
-      fetch_null_texelf,
-      store_null_texel
+      fetch_null_texelf
    },
 
    {
       MESA_FORMAT_RGBA8888,
       fetch_texel_1d_f_rgba8888,
       fetch_texel_2d_f_rgba8888,
-      fetch_texel_3d_f_rgba8888,
-      store_texel_rgba8888
+      fetch_texel_3d_f_rgba8888
    },
    {
       MESA_FORMAT_RGBA8888_REV,
       fetch_texel_1d_f_rgba8888_rev,
       fetch_texel_2d_f_rgba8888_rev,
-      fetch_texel_3d_f_rgba8888_rev,
-      store_texel_rgba8888_rev
+      fetch_texel_3d_f_rgba8888_rev
    },
    {
       MESA_FORMAT_ARGB8888,
       fetch_texel_1d_f_argb8888,
       fetch_texel_2d_f_argb8888,
-      fetch_texel_3d_f_argb8888,
-      store_texel_argb8888
+      fetch_texel_3d_f_argb8888
    },
    {
       MESA_FORMAT_ARGB8888_REV,
       fetch_texel_1d_f_argb8888_rev,
       fetch_texel_2d_f_argb8888_rev,
-      fetch_texel_3d_f_argb8888_rev,
-      store_texel_argb8888_rev
+      fetch_texel_3d_f_argb8888_rev
    },
    {
       MESA_FORMAT_RGBX8888,
       fetch_texel_1d_f_rgbx8888,
       fetch_texel_2d_f_rgbx8888,
-      fetch_texel_3d_f_rgbx8888,
-      store_texel_rgbx8888
+      fetch_texel_3d_f_rgbx8888
    },
    {
       MESA_FORMAT_RGBX8888_REV,
       fetch_texel_1d_f_rgbx8888_rev,
       fetch_texel_2d_f_rgbx8888_rev,
-      fetch_texel_3d_f_rgbx8888_rev,
-      store_texel_rgbx8888_rev,
+      fetch_texel_3d_f_rgbx8888_rev
    },
    {
       MESA_FORMAT_XRGB8888,
       fetch_texel_1d_f_xrgb8888,
       fetch_texel_2d_f_xrgb8888,
-      fetch_texel_3d_f_xrgb8888,
-      store_texel_xrgb8888
+      fetch_texel_3d_f_xrgb8888
    },
    {
       MESA_FORMAT_XRGB8888_REV,
       fetch_texel_1d_f_xrgb8888_rev,
       fetch_texel_2d_f_xrgb8888_rev,
-      fetch_texel_3d_f_xrgb8888_rev,
-      store_texel_xrgb8888_rev,
+      fetch_texel_3d_f_xrgb8888_rev
    },
    {
       MESA_FORMAT_RGB888,
       fetch_texel_1d_f_rgb888,
       fetch_texel_2d_f_rgb888,
-      fetch_texel_3d_f_rgb888,
-      store_texel_rgb888
+      fetch_texel_3d_f_rgb888
    },
    {
       MESA_FORMAT_BGR888,
       fetch_texel_1d_f_bgr888,
       fetch_texel_2d_f_bgr888,
-      fetch_texel_3d_f_bgr888,
-      store_texel_bgr888
+      fetch_texel_3d_f_bgr888
    },
    {
       MESA_FORMAT_RGB565,
       fetch_texel_1d_f_rgb565,
       fetch_texel_2d_f_rgb565,
-      fetch_texel_3d_f_rgb565,
-      store_texel_rgb565
+      fetch_texel_3d_f_rgb565
    },
    {
       MESA_FORMAT_RGB565_REV,
       fetch_texel_1d_f_rgb565_rev,
       fetch_texel_2d_f_rgb565_rev,
-      fetch_texel_3d_f_rgb565_rev,
-      store_texel_rgb565_rev
+      fetch_texel_3d_f_rgb565_rev
    },
    {
       MESA_FORMAT_ARGB4444,
       fetch_texel_1d_f_argb4444,
       fetch_texel_2d_f_argb4444,
-      fetch_texel_3d_f_argb4444,
-      store_texel_argb4444
+      fetch_texel_3d_f_argb4444
    },
    {
       MESA_FORMAT_ARGB4444_REV,
       fetch_texel_1d_f_argb4444_rev,
       fetch_texel_2d_f_argb4444_rev,
-      fetch_texel_3d_f_argb4444_rev,
-      store_texel_argb4444_rev
+      fetch_texel_3d_f_argb4444_rev
    },
    {
       MESA_FORMAT_RGBA5551,
       fetch_texel_1d_f_rgba5551,
       fetch_texel_2d_f_rgba5551,
-      fetch_texel_3d_f_rgba5551,
-      store_texel_rgba5551
+      fetch_texel_3d_f_rgba5551
    },
    {
       MESA_FORMAT_ARGB1555,
       fetch_texel_1d_f_argb1555,
       fetch_texel_2d_f_argb1555,
-      fetch_texel_3d_f_argb1555,
-      store_texel_argb1555
+      fetch_texel_3d_f_argb1555
    },
    {
       MESA_FORMAT_ARGB1555_REV,
       fetch_texel_1d_f_argb1555_rev,
       fetch_texel_2d_f_argb1555_rev,
-      fetch_texel_3d_f_argb1555_rev,
-      store_texel_argb1555_rev
+      fetch_texel_3d_f_argb1555_rev
    },
    {
       MESA_FORMAT_AL44,
       fetch_texel_1d_f_al44,
       fetch_texel_2d_f_al44,
-      fetch_texel_3d_f_al44,
-      store_texel_al44
+      fetch_texel_3d_f_al44
    },
    {
       MESA_FORMAT_AL88,
       fetch_texel_1d_f_al88,
       fetch_texel_2d_f_al88,
-      fetch_texel_3d_f_al88,
-      store_texel_al88
+      fetch_texel_3d_f_al88
    },
    {
       MESA_FORMAT_AL88_REV,
       fetch_texel_1d_f_al88_rev,
       fetch_texel_2d_f_al88_rev,
-      fetch_texel_3d_f_al88_rev,
-      store_texel_al88_rev
+      fetch_texel_3d_f_al88_rev
    },
    {
       MESA_FORMAT_AL1616,
       fetch_texel_1d_f_al1616,
       fetch_texel_2d_f_al1616,
-      fetch_texel_3d_f_al1616,
-      store_texel_al1616
+      fetch_texel_3d_f_al1616
    },
    {
       MESA_FORMAT_AL1616_REV,
       fetch_texel_1d_f_al1616_rev,
       fetch_texel_2d_f_al1616_rev,
-      fetch_texel_3d_f_al1616_rev,
-      store_texel_al1616_rev
+      fetch_texel_3d_f_al1616_rev
    },
    {
       MESA_FORMAT_RGB332,
       fetch_texel_1d_f_rgb332,
       fetch_texel_2d_f_rgb332,
-      fetch_texel_3d_f_rgb332,
-      store_texel_rgb332
+      fetch_texel_3d_f_rgb332
    },
    {
       MESA_FORMAT_A8,
       fetch_texel_1d_f_a8,
       fetch_texel_2d_f_a8,
-      fetch_texel_3d_f_a8,
-      store_texel_a8
+      fetch_texel_3d_f_a8
    },
    {
       MESA_FORMAT_A16,
       fetch_texel_1d_f_a16,
       fetch_texel_2d_f_a16,
-      fetch_texel_3d_f_a16,
-      store_texel_a16
+      fetch_texel_3d_f_a16
    },
    {
       MESA_FORMAT_L8,
       fetch_texel_1d_f_l8,
       fetch_texel_2d_f_l8,
-      fetch_texel_3d_f_l8,
-      store_texel_l8
+      fetch_texel_3d_f_l8
    },
    {
       MESA_FORMAT_L16,
       fetch_texel_1d_f_l16,
       fetch_texel_2d_f_l16,
-      fetch_texel_3d_f_l16,
-      store_texel_l16
+      fetch_texel_3d_f_l16
    },
    {
       MESA_FORMAT_I8,
       fetch_texel_1d_f_i8,
       fetch_texel_2d_f_i8,
-      fetch_texel_3d_f_i8,
-      store_texel_i8
+      fetch_texel_3d_f_i8
    },
    {
       MESA_FORMAT_I16,
       fetch_texel_1d_f_i16,
       fetch_texel_2d_f_i16,
-      fetch_texel_3d_f_i16,
-      store_texel_i16
+      fetch_texel_3d_f_i16
    },
    {
       MESA_FORMAT_YCBCR,
       fetch_texel_1d_f_ycbcr,
       fetch_texel_2d_f_ycbcr,
-      fetch_texel_3d_f_ycbcr,
-      store_texel_ycbcr
+      fetch_texel_3d_f_ycbcr
    },
    {
       MESA_FORMAT_YCBCR_REV,
       fetch_texel_1d_f_ycbcr_rev,
       fetch_texel_2d_f_ycbcr_rev,
-      fetch_texel_3d_f_ycbcr_rev,
-      store_texel_ycbcr_rev
+      fetch_texel_3d_f_ycbcr_rev
    },
    {
       MESA_FORMAT_R8,
       fetch_texel_1d_f_r8,
       fetch_texel_2d_f_r8,
-      fetch_texel_3d_f_r8,
-      store_texel_r8,
+      fetch_texel_3d_f_r8
+   },
+   {
+      MESA_FORMAT_GR88,
+      fetch_texel_1d_f_gr88,
+      fetch_texel_2d_f_gr88,
+      fetch_texel_3d_f_gr88
    },
    {
       MESA_FORMAT_RG88,
       fetch_texel_1d_f_rg88,
       fetch_texel_2d_f_rg88,
-      fetch_texel_3d_f_rg88,
-      store_texel_rg88,
-   },
-   {
-      MESA_FORMAT_RG88_REV,
-      fetch_texel_1d_f_rg88_rev,
-      fetch_texel_2d_f_rg88_rev,
-      fetch_texel_3d_f_rg88_rev,
-      store_texel_rg88_rev,
+      fetch_texel_3d_f_rg88
    },
    {
       MESA_FORMAT_R16,
       fetch_texel_1d_f_r16,
       fetch_texel_2d_f_r16,
-      fetch_texel_3d_f_r16,
-      store_texel_r16,
+      fetch_texel_3d_f_r16
    },
    {
       MESA_FORMAT_RG1616,
       fetch_texel_1d_f_rg1616,
       fetch_texel_2d_f_rg1616,
-      fetch_texel_3d_f_rg1616,
-      store_texel_rg1616,
+      fetch_texel_3d_f_rg1616
    },
    {
       MESA_FORMAT_RG1616_REV,
       fetch_texel_1d_f_rg1616_rev,
       fetch_texel_2d_f_rg1616_rev,
-      fetch_texel_3d_f_rg1616_rev,
-      store_texel_rg1616_rev,
+      fetch_texel_3d_f_rg1616_rev
    },
    {
       MESA_FORMAT_ARGB2101010,
       fetch_texel_1d_f_argb2101010,
       fetch_texel_2d_f_argb2101010,
-      fetch_texel_3d_f_argb2101010,
-      store_texel_argb2101010
+      fetch_texel_3d_f_argb2101010
    },
    {
       MESA_FORMAT_Z24_S8,
       fetch_texel_1d_f_z24_s8,
       fetch_texel_2d_f_z24_s8,
-      fetch_texel_3d_f_z24_s8,
-      store_texel_z24_s8
+      fetch_texel_3d_f_z24_s8
    },
    {
       MESA_FORMAT_S8_Z24,
       fetch_texel_1d_f_s8_z24,
       fetch_texel_2d_f_s8_z24,
-      fetch_texel_3d_f_s8_z24,
-      store_texel_s8_z24
+      fetch_texel_3d_f_s8_z24
    },
    {
       MESA_FORMAT_Z16,
       fetch_texel_1d_f_z16,
       fetch_texel_2d_f_z16,
-      fetch_texel_3d_f_z16,
-      store_texel_z16
+      fetch_texel_3d_f_z16
    },
    {
       MESA_FORMAT_X8_Z24,
       fetch_texel_1d_f_s8_z24,
       fetch_texel_2d_f_s8_z24,
-      fetch_texel_3d_f_s8_z24,
-      store_texel_s8_z24
+      fetch_texel_3d_f_s8_z24
    },
    {
       MESA_FORMAT_Z24_X8,
       fetch_texel_1d_f_z24_s8,
       fetch_texel_2d_f_z24_s8,
-      fetch_texel_3d_f_z24_s8,
-      store_texel_z24_s8
+      fetch_texel_3d_f_z24_s8
    },
    {
       MESA_FORMAT_Z32,
       fetch_texel_1d_f_z32,
       fetch_texel_2d_f_z32,
-      fetch_texel_3d_f_z32,
-      store_texel_z32
+      fetch_texel_3d_f_z32
    },
    {
       MESA_FORMAT_S8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SRGB8,
       fetch_texel_1d_srgb8,
       fetch_texel_2d_srgb8,
-      fetch_texel_3d_srgb8,
-      store_texel_srgb8
+      fetch_texel_3d_srgb8
    },
    {
       MESA_FORMAT_SRGBA8,
       fetch_texel_1d_srgba8,
       fetch_texel_2d_srgba8,
-      fetch_texel_3d_srgba8,
-      store_texel_srgba8
+      fetch_texel_3d_srgba8
    },
    {
       MESA_FORMAT_SARGB8,
       fetch_texel_1d_sargb8,
       fetch_texel_2d_sargb8,
-      fetch_texel_3d_sargb8,
-      store_texel_sargb8
+      fetch_texel_3d_sargb8
    },
    {
       MESA_FORMAT_SL8,
       fetch_texel_1d_sl8,
       fetch_texel_2d_sl8,
-      fetch_texel_3d_sl8,
-      store_texel_sl8
+      fetch_texel_3d_sl8
    },
    {
       MESA_FORMAT_SLA8,
       fetch_texel_1d_sla8,
       fetch_texel_2d_sla8,
-      fetch_texel_3d_sla8,
-      store_texel_sla8
+      fetch_texel_3d_sla8
    },
    {
       MESA_FORMAT_SRGB_DXT1,
       NULL,
       _mesa_fetch_texel_2d_f_srgb_dxt1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SRGBA_DXT1,
       NULL,
       _mesa_fetch_texel_2d_f_srgba_dxt1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SRGBA_DXT3,
       NULL,
       _mesa_fetch_texel_2d_f_srgba_dxt3,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SRGBA_DXT5,
       NULL,
       _mesa_fetch_texel_2d_f_srgba_dxt5,
-      NULL,
       NULL
    },
 
@@ -519,162 +452,139 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_RGB_FXT1,
       NULL,
       _mesa_fetch_texel_2d_f_rgb_fxt1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_FXT1,
       NULL,
       _mesa_fetch_texel_2d_f_rgba_fxt1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGB_DXT1,
       NULL,
       _mesa_fetch_texel_2d_f_rgb_dxt1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_DXT1,
       NULL,
       _mesa_fetch_texel_2d_f_rgba_dxt1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_DXT3,
       NULL,
       _mesa_fetch_texel_2d_f_rgba_dxt3,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_DXT5,
       NULL,
       _mesa_fetch_texel_2d_f_rgba_dxt5,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_FLOAT32,
       fetch_texel_1d_f_rgba_f32,
       fetch_texel_2d_f_rgba_f32,
-      fetch_texel_3d_f_rgba_f32,
-      store_texel_rgba_f32
+      fetch_texel_3d_f_rgba_f32
    },
    {
       MESA_FORMAT_RGBA_FLOAT16,
       fetch_texel_1d_f_rgba_f16,
       fetch_texel_2d_f_rgba_f16,
-      fetch_texel_3d_f_rgba_f16,
-      store_texel_rgba_f16
+      fetch_texel_3d_f_rgba_f16
    },
    {
       MESA_FORMAT_RGB_FLOAT32,
       fetch_texel_1d_f_rgb_f32,
       fetch_texel_2d_f_rgb_f32,
-      fetch_texel_3d_f_rgb_f32,
-      store_texel_rgb_f32
+      fetch_texel_3d_f_rgb_f32
    },
    {
       MESA_FORMAT_RGB_FLOAT16,
       fetch_texel_1d_f_rgb_f16,
       fetch_texel_2d_f_rgb_f16,
-      fetch_texel_3d_f_rgb_f16,
-      store_texel_rgb_f16
+      fetch_texel_3d_f_rgb_f16
    },
    {
       MESA_FORMAT_ALPHA_FLOAT32,
       fetch_texel_1d_f_alpha_f32,
       fetch_texel_2d_f_alpha_f32,
-      fetch_texel_3d_f_alpha_f32,
-      store_texel_alpha_f32
+      fetch_texel_3d_f_alpha_f32
    },
    {
       MESA_FORMAT_ALPHA_FLOAT16,
       fetch_texel_1d_f_alpha_f16,
       fetch_texel_2d_f_alpha_f16,
-      fetch_texel_3d_f_alpha_f16,
-      store_texel_alpha_f16
+      fetch_texel_3d_f_alpha_f16
    },
    {
       MESA_FORMAT_LUMINANCE_FLOAT32,
       fetch_texel_1d_f_luminance_f32,
       fetch_texel_2d_f_luminance_f32,
-      fetch_texel_3d_f_luminance_f32,
-      store_texel_luminance_f32
+      fetch_texel_3d_f_luminance_f32
    },
    {
       MESA_FORMAT_LUMINANCE_FLOAT16,
       fetch_texel_1d_f_luminance_f16,
       fetch_texel_2d_f_luminance_f16,
-      fetch_texel_3d_f_luminance_f16,
-      store_texel_luminance_f16
+      fetch_texel_3d_f_luminance_f16
    },
    {
       MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
       fetch_texel_1d_f_luminance_alpha_f32,
       fetch_texel_2d_f_luminance_alpha_f32,
-      fetch_texel_3d_f_luminance_alpha_f32,
-      store_texel_luminance_alpha_f32
+      fetch_texel_3d_f_luminance_alpha_f32
    },
    {
       MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
       fetch_texel_1d_f_luminance_alpha_f16,
       fetch_texel_2d_f_luminance_alpha_f16,
-      fetch_texel_3d_f_luminance_alpha_f16,
-      store_texel_luminance_alpha_f16
+      fetch_texel_3d_f_luminance_alpha_f16
    },
    {
       MESA_FORMAT_INTENSITY_FLOAT32,
       fetch_texel_1d_f_intensity_f32,
       fetch_texel_2d_f_intensity_f32,
-      fetch_texel_3d_f_intensity_f32,
-      store_texel_intensity_f32
+      fetch_texel_3d_f_intensity_f32
    },
    {
       MESA_FORMAT_INTENSITY_FLOAT16,
       fetch_texel_1d_f_intensity_f16,
       fetch_texel_2d_f_intensity_f16,
-      fetch_texel_3d_f_intensity_f16,
-      store_texel_intensity_f16
+      fetch_texel_3d_f_intensity_f16
    },
    {
       MESA_FORMAT_R_FLOAT32,
       fetch_texel_1d_f_r_f32,
       fetch_texel_2d_f_r_f32,
-      fetch_texel_3d_f_r_f32,
-      store_texel_r_f32
+      fetch_texel_3d_f_r_f32
    },
    {
       MESA_FORMAT_R_FLOAT16,
       fetch_texel_1d_f_r_f16,
       fetch_texel_2d_f_r_f16,
-      fetch_texel_3d_f_r_f16,
-      store_texel_r_f16
+      fetch_texel_3d_f_r_f16
    },
    {
       MESA_FORMAT_RG_FLOAT32,
       fetch_texel_1d_f_rg_f32,
       fetch_texel_2d_f_rg_f32,
-      fetch_texel_3d_f_rg_f32,
-      store_texel_rg_f32
+      fetch_texel_3d_f_rg_f32
    },
    {
       MESA_FORMAT_RG_FLOAT16,
       fetch_texel_1d_f_rg_f16,
       fetch_texel_2d_f_rg_f16,
-      fetch_texel_3d_f_rg_f16,
-      store_texel_rg_f16
+      fetch_texel_3d_f_rg_f16
    },
 
    {
       MESA_FORMAT_ALPHA_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -682,7 +592,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_ALPHA_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -690,7 +599,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_ALPHA_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -698,7 +606,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_ALPHA_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -706,7 +613,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_ALPHA_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -714,7 +620,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_ALPHA_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -723,7 +628,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_INTENSITY_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -731,7 +635,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_INTENSITY_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -739,7 +642,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_INTENSITY_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -747,7 +649,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_INTENSITY_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -755,7 +656,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_INTENSITY_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -763,7 +663,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_INTENSITY_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -772,7 +671,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -780,7 +678,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -788,7 +685,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -796,7 +692,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -804,7 +699,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -812,7 +706,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -821,7 +714,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -829,7 +721,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -837,7 +728,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -845,7 +735,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_ALPHA_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -853,7 +742,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_ALPHA_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -861,7 +749,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_LUMINANCE_ALPHA_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -870,7 +757,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_R_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -878,7 +764,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_RG_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -886,7 +771,6 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_RGB_INT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
 
@@ -895,64 +779,55 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_RGBA_INT8,
       fetch_texel_1d_rgba_int8,
       fetch_texel_2d_rgba_int8,
-      fetch_texel_3d_rgba_int8,
-      store_texel_rgba_int8
+      fetch_texel_3d_rgba_int8
    },
    {
       MESA_FORMAT_R_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RG_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGB_INT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_INT16,
       fetch_texel_1d_rgba_int16,
       fetch_texel_2d_rgba_int16,
-      fetch_texel_3d_rgba_int16,
-      store_texel_rgba_int16
+      fetch_texel_3d_rgba_int16
    },
    {
       MESA_FORMAT_R_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RG_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGB_INT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_INT32,
       fetch_texel_1d_rgba_int32,
       fetch_texel_2d_rgba_int32,
-      fetch_texel_3d_rgba_int32,
-      store_texel_rgba_int32
+      fetch_texel_3d_rgba_int32
    },
 
    /* non-normalized, unsigned int */
@@ -960,85 +835,73 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_R_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RG_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGB_UINT8,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_UINT8,
       fetch_texel_1d_rgba_uint8,
       fetch_texel_2d_rgba_uint8,
-      fetch_texel_3d_rgba_uint8,
-      store_texel_rgba_uint8
+      fetch_texel_3d_rgba_uint8
    },
    {
       MESA_FORMAT_R_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RG_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGB_UINT16,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_UINT16,
       fetch_texel_1d_rgba_uint16,
       fetch_texel_2d_rgba_uint16,
-      fetch_texel_3d_rgba_uint16,
-      store_texel_rgba_uint16
+      fetch_texel_3d_rgba_uint16
    },
    {
       MESA_FORMAT_R_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RG_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGB_UINT32,
       NULL,
       NULL,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RGBA_UINT32,
       fetch_texel_1d_rgba_uint32,
       fetch_texel_2d_rgba_uint32,
-      fetch_texel_3d_rgba_uint32,
-      store_texel_rgba_uint32
+      fetch_texel_3d_rgba_uint32
    },
 
    /* dudv */
@@ -1046,8 +909,7 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_DUDV8,
       fetch_texel_1d_dudv8,
       fetch_texel_2d_dudv8,
-      fetch_texel_3d_dudv8,
-      NULL
+      fetch_texel_3d_dudv8
    },
 
    /* signed, normalized */
@@ -1055,217 +917,192 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       MESA_FORMAT_SIGNED_R8,
       fetch_texel_1d_signed_r8,
       fetch_texel_2d_signed_r8,
-      fetch_texel_3d_signed_r8,
-      store_texel_signed_r8
+      fetch_texel_3d_signed_r8
    },
    {
       MESA_FORMAT_SIGNED_RG88_REV,
       fetch_texel_1d_signed_rg88_rev,
       fetch_texel_2d_signed_rg88_rev,
-      fetch_texel_3d_signed_rg88_rev,
-      store_texel_signed_rg88_rev
+      fetch_texel_3d_signed_rg88_rev
    },
    {
       MESA_FORMAT_SIGNED_RGBX8888,
       fetch_texel_1d_signed_rgbx8888,
       fetch_texel_2d_signed_rgbx8888,
-      fetch_texel_3d_signed_rgbx8888,
-      store_texel_signed_rgbx8888
+      fetch_texel_3d_signed_rgbx8888
    },
    {
       MESA_FORMAT_SIGNED_RGBA8888,
       fetch_texel_1d_signed_rgba8888,
       fetch_texel_2d_signed_rgba8888,
-      fetch_texel_3d_signed_rgba8888,
-      store_texel_signed_rgba8888
+      fetch_texel_3d_signed_rgba8888
    },
    {
       MESA_FORMAT_SIGNED_RGBA8888_REV,
       fetch_texel_1d_signed_rgba8888_rev,
       fetch_texel_2d_signed_rgba8888_rev,
-      fetch_texel_3d_signed_rgba8888_rev,
-      store_texel_signed_rgba8888_rev
+      fetch_texel_3d_signed_rgba8888_rev
    },
    {
       MESA_FORMAT_SIGNED_R16,
       fetch_texel_1d_signed_r16,
       fetch_texel_2d_signed_r16,
-      fetch_texel_3d_signed_r16,
-      store_texel_signed_r16
+      fetch_texel_3d_signed_r16
    },
    {
       MESA_FORMAT_SIGNED_GR1616,
       fetch_texel_1d_signed_rg1616,
       fetch_texel_2d_signed_rg1616,
-      fetch_texel_3d_signed_rg1616,
-      store_texel_signed_rg1616
+      fetch_texel_3d_signed_rg1616
    },
    {
       MESA_FORMAT_SIGNED_RGB_16,
       fetch_texel_1d_signed_rgb_16,
       fetch_texel_2d_signed_rgb_16,
-      fetch_texel_3d_signed_rgb_16,
-      store_texel_signed_rgb_16
+      fetch_texel_3d_signed_rgb_16
    },
    {
       MESA_FORMAT_SIGNED_RGBA_16,
       fetch_texel_1d_signed_rgba_16,
       fetch_texel_2d_signed_rgba_16,
-      fetch_texel_3d_signed_rgba_16,
-      store_texel_signed_rgba_16
+      fetch_texel_3d_signed_rgba_16
    },
    {
       MESA_FORMAT_RGBA_16,
       fetch_texel_1d_rgba_16,
       fetch_texel_2d_rgba_16,
-      fetch_texel_3d_rgba_16,
-      store_texel_rgba_16
+      fetch_texel_3d_rgba_16
    },
    {
       MESA_FORMAT_RED_RGTC1,
       NULL,
       _mesa_fetch_texel_2d_f_red_rgtc1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SIGNED_RED_RGTC1,
       NULL,
       _mesa_fetch_texel_2d_f_signed_red_rgtc1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_RG_RGTC2,
       NULL,
       _mesa_fetch_texel_2d_f_rg_rgtc2,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SIGNED_RG_RGTC2,
       NULL,
       _mesa_fetch_texel_2d_f_signed_rg_rgtc2,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_L_LATC1,
       NULL,
       _mesa_fetch_texel_2d_f_l_latc1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SIGNED_L_LATC1,
       NULL,
       _mesa_fetch_texel_2d_f_signed_l_latc1,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_LA_LATC2,
       NULL,
       _mesa_fetch_texel_2d_f_la_latc2,
-      NULL,
       NULL
    },
    {
       MESA_FORMAT_SIGNED_LA_LATC2,
       NULL,
       _mesa_fetch_texel_2d_f_signed_la_latc2,
+      NULL
+   },
+   {
+      MESA_FORMAT_ETC1_RGB8,
       NULL,
+      _mesa_fetch_texel_2d_f_etc1_rgb8,
       NULL
    },
    {
       MESA_FORMAT_SIGNED_A8,
       fetch_texel_1d_signed_a8,
       fetch_texel_2d_signed_a8,
-      fetch_texel_3d_signed_a8,
-      store_texel_signed_a8
+      fetch_texel_3d_signed_a8
    },
    {
       MESA_FORMAT_SIGNED_L8,
       fetch_texel_1d_signed_l8,
       fetch_texel_2d_signed_l8,
-      fetch_texel_3d_signed_l8,
-      store_texel_signed_l8
+      fetch_texel_3d_signed_l8
    },
    {
       MESA_FORMAT_SIGNED_AL88,
       fetch_texel_1d_signed_al88,
       fetch_texel_2d_signed_al88,
-      fetch_texel_3d_signed_al88,
-      store_texel_signed_al88
+      fetch_texel_3d_signed_al88
    },
    {
       MESA_FORMAT_SIGNED_I8,
       fetch_texel_1d_signed_i8,
       fetch_texel_2d_signed_i8,
-      fetch_texel_3d_signed_i8,
-      store_texel_signed_i8
+      fetch_texel_3d_signed_i8
    },
    {
       MESA_FORMAT_SIGNED_A16,
       fetch_texel_1d_signed_a16,
       fetch_texel_2d_signed_a16,
-      fetch_texel_3d_signed_a16,
-      store_texel_signed_a16
+      fetch_texel_3d_signed_a16
    },
    {
       MESA_FORMAT_SIGNED_L16,
       fetch_texel_1d_signed_l16,
       fetch_texel_2d_signed_l16,
-      fetch_texel_3d_signed_l16,
-      store_texel_signed_l16
+      fetch_texel_3d_signed_l16
    },
    {
       MESA_FORMAT_SIGNED_AL1616,
       fetch_texel_1d_signed_al1616,
       fetch_texel_2d_signed_al1616,
-      fetch_texel_3d_signed_al1616,
-      store_texel_signed_al1616
+      fetch_texel_3d_signed_al1616
    },
    {
       MESA_FORMAT_SIGNED_I16,
       fetch_texel_1d_signed_i16,
       fetch_texel_2d_signed_i16,
-      fetch_texel_3d_signed_i16,
-      store_texel_signed_i16
+      fetch_texel_3d_signed_i16
    },
    {
       MESA_FORMAT_RGB9_E5_FLOAT,
       fetch_texel_1d_rgb9_e5,
       fetch_texel_2d_rgb9_e5,
-      fetch_texel_3d_rgb9_e5,
-      store_texel_rgb9_e5
+      fetch_texel_3d_rgb9_e5
    },
    {
       MESA_FORMAT_R11_G11_B10_FLOAT,
       fetch_texel_1d_r11_g11_b10f,
       fetch_texel_2d_r11_g11_b10f,
-      fetch_texel_3d_r11_g11_b10f,
-      store_texel_r11_g11_b10f
+      fetch_texel_3d_r11_g11_b10f
    },
    {
       MESA_FORMAT_Z32_FLOAT,
       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
+      fetch_texel_3d_f_r_f32
    },
    {
       MESA_FORMAT_Z32_FLOAT_X24S8,
       fetch_texel_1d_z32f_x24s8,
       fetch_texel_2d_z32f_x24s8,
-      fetch_texel_3d_z32f_x24s8,
-      store_texel_z32f_x24s8
+      fetch_texel_3d_z32f_x24s8
    },
    {
       MESA_FORMAT_ARGB2101010_UINT,
       NULL,
       NULL,
-      NULL,
       NULL
    }
 };
@@ -1300,14 +1137,6 @@ _mesa_get_texel_fetch_func(gl_format format, GLuint dims)
 }
 
 
-StoreTexelFunc
-_mesa_get_texel_store_func(gl_format format)
-{
-   assert(format < MESA_FORMAT_COUNT);
-   return texfetch_funcs[format].StoreTexel;
-}
-
-
 /**
  * Initialize the texture image's FetchTexel methods.
  */