mesa: add helper _mesa_is_format_etc2
[mesa.git] / src / mesa / main / texcompress_rgtc.c
index fa9172aa2827127b130002d0d314e970ab884571..1012699f55538fd79b35a773d2ce6f55a80187af 100644 (file)
@@ -38,7 +38,6 @@
 #include "colormac.h"
 #include "image.h"
 #include "macros.h"
-#include "mfeatures.h"
 #include "mipmap.h"
 #include "texcompress.h"
 #include "texcompress_rgtc.h"
@@ -98,8 +97,8 @@ _mesa_texstore_red_rgtc1(TEXSTORE_PARAMS)
    GLubyte srcpixels[4][4];
    GLubyte *blkaddr;
    GLint dstRowDiff;
-   ASSERT(dstFormat == MESA_FORMAT_RED_RGTC1 ||
-          dstFormat == MESA_FORMAT_L_LATC1);
+   ASSERT(dstFormat == MESA_FORMAT_R_RGTC1_UNORM ||
+          dstFormat == MESA_FORMAT_L_LATC1_UNORM);
 
    tempImage = _mesa_make_temp_ubyte_image(ctx, dims,
                                          baseInternalFormat,
@@ -145,8 +144,8 @@ _mesa_texstore_signed_red_rgtc1(TEXSTORE_PARAMS)
    GLbyte srcpixels[4][4];
    GLbyte *blkaddr;
    GLint dstRowDiff;
-   ASSERT(dstFormat == MESA_FORMAT_SIGNED_RED_RGTC1 ||
-          dstFormat == MESA_FORMAT_SIGNED_L_LATC1);
+   ASSERT(dstFormat == MESA_FORMAT_R_RGTC1_SNORM ||
+          dstFormat == MESA_FORMAT_L_LATC1_SNORM);
 
    tempImage = _mesa_make_temp_float_image(ctx, dims,
                                           baseInternalFormat,
@@ -193,8 +192,8 @@ _mesa_texstore_rg_rgtc2(TEXSTORE_PARAMS)
    GLubyte *blkaddr;
    GLint dstRowDiff;
 
-   ASSERT(dstFormat == MESA_FORMAT_RG_RGTC2 ||
-          dstFormat == MESA_FORMAT_LA_LATC2);
+   ASSERT(dstFormat == MESA_FORMAT_RG_RGTC2_UNORM ||
+          dstFormat == MESA_FORMAT_LA_LATC2_UNORM);
 
    tempImage = _mesa_make_temp_ubyte_image(ctx, dims,
                                          baseInternalFormat,
@@ -247,8 +246,8 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS)
    GLbyte *blkaddr;
    GLint dstRowDiff;
 
-   ASSERT(dstFormat == MESA_FORMAT_SIGNED_RG_RGTC2 ||
-          dstFormat == MESA_FORMAT_SIGNED_LA_LATC2);
+   ASSERT(dstFormat == MESA_FORMAT_RG_RGTC2_SNORM ||
+          dstFormat == MESA_FORMAT_LA_LATC2_SNORM);
 
    tempImage = _mesa_make_temp_float_image(ctx, dims,
                                           baseInternalFormat,
@@ -319,12 +318,11 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS)
 
 
 static void
-fetch_red_rgtc1(const GLubyte *map, const GLuint imageOffsets[],
-                GLint rowStride, GLint i, GLint j, GLint k, GLfloat *texel)
+fetch_red_rgtc1(const GLubyte *map,
+                GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLubyte red;
-   GLuint sliceOffset = k ? imageOffsets[k] / 2 : 0;
-   unsigned_fetch_texel_rgtc(rowStride, map + sliceOffset, i, j, &red, 1);
+   unsigned_fetch_texel_rgtc(rowStride, map, i, j, &red, 1);
    texel[RCOMP] = UBYTE_TO_FLOAT(red);
    texel[GCOMP] = 0.0;
    texel[BCOMP] = 0.0;
@@ -332,12 +330,11 @@ fetch_red_rgtc1(const GLubyte *map, const GLuint imageOffsets[],
 }
 
 static void
-fetch_l_latc1(const GLubyte *map, const GLuint imageOffsets[],
-              GLint rowStride, GLint i, GLint j, GLint k, GLfloat *texel)
+fetch_l_latc1(const GLubyte *map,
+              GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLubyte red;
-   GLuint sliceOffset = k ? imageOffsets[k] / 2 : 0;
-   unsigned_fetch_texel_rgtc(rowStride, map + sliceOffset, i, j, &red, 1);
+   unsigned_fetch_texel_rgtc(rowStride, map, i, j, &red, 1);
    texel[RCOMP] =
    texel[GCOMP] =
    texel[BCOMP] = UBYTE_TO_FLOAT(red);
@@ -345,13 +342,11 @@ fetch_l_latc1(const GLubyte *map, const GLuint imageOffsets[],
 }
 
 static void
-fetch_signed_red_rgtc1(const GLubyte *map, const GLuint imageOffsets[],
-                       GLint rowStride, GLint i, GLint j, GLint k,
-                       GLfloat *texel)
+fetch_signed_red_rgtc1(const GLubyte *map,
+                       GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLbyte red;
-   GLuint sliceOffset = k ? imageOffsets[k] / 2 : 0;
-   signed_fetch_texel_rgtc(rowStride, (const GLbyte *) map + sliceOffset,
+   signed_fetch_texel_rgtc(rowStride, (const GLbyte *) map,
                            i, j, &red, 1);
    texel[RCOMP] = BYTE_TO_FLOAT_TEX(red);
    texel[GCOMP] = 0.0;
@@ -360,13 +355,12 @@ fetch_signed_red_rgtc1(const GLubyte *map, const GLuint imageOffsets[],
 }
 
 static void
-fetch_signed_l_latc1(const GLubyte *map, const GLuint imageOffsets[],
-                     GLint rowStride, GLint i, GLint j, GLint k,
-                     GLfloat *texel)
+fetch_signed_l_latc1(const GLubyte *map,
+                     GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
-   GLubyte red;
-   GLuint sliceOffset = k ? imageOffsets[k] / 2 : 0;
-   unsigned_fetch_texel_rgtc(rowStride,  map + sliceOffset, i, j, &red, 1);
+   GLbyte red;
+   signed_fetch_texel_rgtc(rowStride, (GLbyte *) map,
+                           i, j, &red, 1);
    texel[RCOMP] =
    texel[GCOMP] =
    texel[BCOMP] = BYTE_TO_FLOAT(red);
@@ -374,17 +368,15 @@ fetch_signed_l_latc1(const GLubyte *map, const GLuint imageOffsets[],
 }
 
 static void
-fetch_rg_rgtc2(const GLubyte *map, const GLuint imageOffsets[],
-               GLint rowStride, GLint i, GLint j, GLint k,
-               GLfloat *texel)
+fetch_rg_rgtc2(const GLubyte *map,
+               GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLubyte red, green;
-   GLuint sliceOffset = k ? imageOffsets[k] : 0;
    unsigned_fetch_texel_rgtc(rowStride,
-                             map + sliceOffset,
+                             map,
                              i, j, &red, 2);
    unsigned_fetch_texel_rgtc(rowStride,
-                             map + sliceOffset + 8,
+                             map + 8,
                              i, j, &green, 2);
    texel[RCOMP] = UBYTE_TO_FLOAT(red);
    texel[GCOMP] = UBYTE_TO_FLOAT(green);
@@ -393,17 +385,15 @@ fetch_rg_rgtc2(const GLubyte *map, const GLuint imageOffsets[],
 }
 
 static void
-fetch_la_latc2(const GLubyte *map, const GLuint imageOffsets[],
-               GLint rowStride, GLint i, GLint j, GLint k,
-               GLfloat *texel)
+fetch_la_latc2(const GLubyte *map,
+               GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLubyte red, green;
-   GLuint sliceOffset = k ? imageOffsets[k] : 0;
    unsigned_fetch_texel_rgtc(rowStride,
-                             map + sliceOffset,
+                             map,
                              i, j, &red, 2);
    unsigned_fetch_texel_rgtc(rowStride,
-                             map + sliceOffset + 8,
+                             map + 8,
                              i, j, &green, 2);
    texel[RCOMP] =
    texel[GCOMP] =
@@ -413,17 +403,15 @@ fetch_la_latc2(const GLubyte *map, const GLuint imageOffsets[],
 
 
 static void
-fetch_signed_rg_rgtc2(const GLubyte *map, const GLuint imageOffsets[],
-                      GLint rowStride, GLint i, GLint j, GLint k,
-                      GLfloat *texel)
+fetch_signed_rg_rgtc2(const GLubyte *map,
+                      GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLbyte red, green;
-   GLuint sliceOffset = k ? imageOffsets[k] : 0;
    signed_fetch_texel_rgtc(rowStride,
-                           (GLbyte *) map + sliceOffset,
+                           (GLbyte *) map,
                            i, j, &red, 2);
    signed_fetch_texel_rgtc(rowStride,
-                           (GLbyte *) map + sliceOffset + 8,
+                           (GLbyte *) map + 8,
                            i, j, &green, 2);
    texel[RCOMP] = BYTE_TO_FLOAT_TEX(red);
    texel[GCOMP] = BYTE_TO_FLOAT_TEX(green);
@@ -433,17 +421,15 @@ fetch_signed_rg_rgtc2(const GLubyte *map, const GLuint imageOffsets[],
 
 
 static void
-fetch_signed_la_latc2(const GLubyte *map, const GLuint imageOffsets[],
-                      GLint rowStride, GLint i, GLint j, GLint k,
-                      GLfloat *texel)
+fetch_signed_la_latc2(const GLubyte *map,
+                      GLint rowStride, GLint i, GLint j, GLfloat *texel)
 {
    GLbyte red, green;
-   GLuint sliceOffset = k ? imageOffsets[k] : 0;
    signed_fetch_texel_rgtc(rowStride,
-                           (GLbyte *) map + sliceOffset,
+                           (GLbyte *) map,
                            i, j, &red, 2);
    signed_fetch_texel_rgtc(rowStride,
-                           (GLbyte *) map + sliceOffset + 8,
+                           (GLbyte *) map + 8,
                            i, j, &green, 2);
    texel[RCOMP] =
    texel[GCOMP] =
@@ -453,24 +439,24 @@ fetch_signed_la_latc2(const GLubyte *map, const GLuint imageOffsets[],
 
 
 compressed_fetch_func
-_mesa_get_compressed_rgtc_func(gl_format format)
+_mesa_get_compressed_rgtc_func(mesa_format format)
 {
    switch (format) {
-   case MESA_FORMAT_RED_RGTC1:
+   case MESA_FORMAT_R_RGTC1_UNORM:
       return fetch_red_rgtc1;
-   case MESA_FORMAT_L_LATC1:
+   case MESA_FORMAT_L_LATC1_UNORM:
       return fetch_l_latc1;
-   case MESA_FORMAT_SIGNED_RED_RGTC1:
+   case MESA_FORMAT_R_RGTC1_SNORM:
       return fetch_signed_red_rgtc1;
-   case MESA_FORMAT_SIGNED_L_LATC1:
+   case MESA_FORMAT_L_LATC1_SNORM:
       return fetch_signed_l_latc1;
-   case MESA_FORMAT_RG_RGTC2:
+   case MESA_FORMAT_RG_RGTC2_UNORM:
       return fetch_rg_rgtc2;
-   case MESA_FORMAT_LA_LATC2:
+   case MESA_FORMAT_LA_LATC2_UNORM:
       return fetch_la_latc2;
-   case MESA_FORMAT_SIGNED_RG_RGTC2:
+   case MESA_FORMAT_RG_RGTC2_SNORM:
       return fetch_signed_rg_rgtc2;
-   case MESA_FORMAT_SIGNED_LA_LATC2:
+   case MESA_FORMAT_LA_LATC2_SNORM:
       return fetch_signed_la_latc2;
    default:
       return NULL;