summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2017-09-27 21:24:27 -0700
committerMatt Turner <mattst88@gmail.com>2017-10-02 19:41:22 -0700
commit78c6221f18ab451f2e57bc61852595a60f82e3cb (patch)
treeb9ce9ba497854e176105bd3a53818bd3ade675f9
parent34cf3c43beed2fafb4512e921f39c818478f86d7 (diff)
mesa: Drop function pointer checks in s3tc code
Now never null! Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
-rw-r--r--src/mesa/main/texcompress_s3tc.c193
1 files changed, 60 insertions, 133 deletions
diff --git a/src/mesa/main/texcompress_s3tc.c b/src/mesa/main/texcompress_s3tc.c
index e74e4c402ae..14067f0e991 100644
--- a/src/mesa/main/texcompress_s3tc.c
+++ b/src/mesa/main/texcompress_s3tc.c
@@ -92,14 +92,9 @@ _mesa_texstore_rgb_dxt1(TEXSTORE_PARAMS)
dst = dstSlices[0];
- if (tx_compress_dxtn) {
- (*tx_compress_dxtn)(3, srcWidth, srcHeight, pixels,
- GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
- dst, dstRowStride);
- }
- else {
- _mesa_warning(ctx, "external dxt library not available: texstore_rgb_dxt1");
- }
+ tx_compress_dxtn(3, srcWidth, srcHeight, pixels,
+ GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
+ dst, dstRowStride);
free((void *) tempImage);
@@ -150,14 +145,9 @@ _mesa_texstore_rgba_dxt1(TEXSTORE_PARAMS)
dst = dstSlices[0];
- if (tx_compress_dxtn) {
- (*tx_compress_dxtn)(4, srcWidth, srcHeight, pixels,
- GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
- dst, dstRowStride);
- }
- else {
- _mesa_warning(ctx, "external dxt library not available: texstore_rgba_dxt1");
- }
+ tx_compress_dxtn(4, srcWidth, srcHeight, pixels,
+ GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
+ dst, dstRowStride);
free((void*) tempImage);
@@ -207,14 +197,9 @@ _mesa_texstore_rgba_dxt3(TEXSTORE_PARAMS)
dst = dstSlices[0];
- if (tx_compress_dxtn) {
- (*tx_compress_dxtn)(4, srcWidth, srcHeight, pixels,
- GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
- dst, dstRowStride);
- }
- else {
- _mesa_warning(ctx, "external dxt library not available: texstore_rgba_dxt3");
- }
+ tx_compress_dxtn(4, srcWidth, srcHeight, pixels,
+ GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
+ dst, dstRowStride);
free((void *) tempImage);
@@ -264,14 +249,9 @@ _mesa_texstore_rgba_dxt5(TEXSTORE_PARAMS)
dst = dstSlices[0];
- if (tx_compress_dxtn) {
- (*tx_compress_dxtn)(4, srcWidth, srcHeight, pixels,
- GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
- dst, dstRowStride);
- }
- else {
- _mesa_warning(ctx, "external dxt library not available: texstore_rgba_dxt5");
- }
+ tx_compress_dxtn(4, srcWidth, srcHeight, pixels,
+ GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
+ dst, dstRowStride);
free((void *) tempImage);
@@ -279,85 +259,52 @@ _mesa_texstore_rgba_dxt5(TEXSTORE_PARAMS)
}
-/** Report problem with dxt texture decompression, once */
-static void
-problem(const char *func)
-{
- static GLboolean warned = GL_FALSE;
- if (!warned) {
- _mesa_debug(NULL, "attempted to decode DXT texture without "
- "library available: %s\n", func);
- warned = GL_TRUE;
- }
-}
-
-
static void
fetch_rgb_dxt1(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgb_dxt1) {
- GLubyte tex[4];
- fetch_2d_texel_rgb_dxt1(rowStride, map, i, j, tex);
- texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
- texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
- texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("rgb_dxt1");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgb_dxt1(rowStride, map, i, j, tex);
+ texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
+ texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
+ texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
static void
fetch_rgba_dxt1(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgba_dxt1) {
- GLubyte tex[4];
- fetch_2d_texel_rgba_dxt1(rowStride, map, i, j, tex);
- texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
- texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
- texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("rgba_dxt1");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgba_dxt1(rowStride, map, i, j, tex);
+ texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
+ texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
+ texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
static void
fetch_rgba_dxt3(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgba_dxt3) {
- GLubyte tex[4];
- fetch_2d_texel_rgba_dxt3(rowStride, map, i, j, tex);
- texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
- texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
- texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("rgba_dxt3");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgba_dxt3(rowStride, map, i, j, tex);
+ texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
+ texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
+ texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
static void
fetch_rgba_dxt5(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgba_dxt5) {
- GLubyte tex[4];
- fetch_2d_texel_rgba_dxt5(rowStride, map, i, j, tex);
- texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
- texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
- texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("rgba_dxt5");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgba_dxt5(rowStride, map, i, j, tex);
+ texel[RCOMP] = UBYTE_TO_FLOAT(tex[RCOMP]);
+ texel[GCOMP] = UBYTE_TO_FLOAT(tex[GCOMP]);
+ texel[BCOMP] = UBYTE_TO_FLOAT(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
@@ -365,68 +312,48 @@ static void
fetch_srgb_dxt1(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgb_dxt1) {
- GLubyte tex[4];
- fetch_2d_texel_rgb_dxt1(rowStride, map, i, j, tex);
- texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
- texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
- texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("srgb_dxt1");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgb_dxt1(rowStride, map, i, j, tex);
+ texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
+ texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
+ texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
static void
fetch_srgba_dxt1(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgba_dxt1) {
- GLubyte tex[4];
- fetch_2d_texel_rgba_dxt1(rowStride, map, i, j, tex);
- texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
- texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
- texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("srgba_dxt1");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgba_dxt1(rowStride, map, i, j, tex);
+ texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
+ texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
+ texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
static void
fetch_srgba_dxt3(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgba_dxt3) {
- GLubyte tex[4];
- fetch_2d_texel_rgba_dxt3(rowStride, map, i, j, tex);
- texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
- texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
- texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("srgba_dxt3");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgba_dxt3(rowStride, map, i, j, tex);
+ texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
+ texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
+ texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}
static void
fetch_srgba_dxt5(const GLubyte *map,
GLint rowStride, GLint i, GLint j, GLfloat *texel)
{
- if (fetch_2d_texel_rgba_dxt5) {
- GLubyte tex[4];
- fetch_2d_texel_rgba_dxt5(rowStride, map, i, j, tex);
- texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
- texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
- texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
- texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
- }
- else {
- problem("srgba_dxt5");
- }
+ GLubyte tex[4];
+ fetch_2d_texel_rgba_dxt5(rowStride, map, i, j, tex);
+ texel[RCOMP] = util_format_srgb_8unorm_to_linear_float(tex[RCOMP]);
+ texel[GCOMP] = util_format_srgb_8unorm_to_linear_float(tex[GCOMP]);
+ texel[BCOMP] = util_format_srgb_8unorm_to_linear_float(tex[BCOMP]);
+ texel[ACOMP] = UBYTE_TO_FLOAT(tex[ACOMP]);
}