From: Brian Paul Date: Sat, 8 Dec 2012 22:19:44 +0000 (-0700) Subject: mesa: add new texel fetch code for fxt formats X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=141d299965d9594e82e5218cf162440903e44ea7;p=mesa.git mesa: add new texel fetch code for fxt formats --- diff --git a/src/mesa/main/texcompress_fxt1.c b/src/mesa/main/texcompress_fxt1.c index eeed78891c9..6a0f8560532 100644 --- a/src/mesa/main/texcompress_fxt1.c +++ b/src/mesa/main/texcompress_fxt1.c @@ -1643,3 +1643,45 @@ fxt1_decode_1 (const void *texture, GLint stride, /* in pixels */ decode_1[mode](code, t, rgba); } + + + + +static void +fetch_rgb_fxt1(const GLubyte *map, const GLuint imageOffsets[], + GLint rowStride, GLint i, GLint j, GLint k, GLfloat *texel) +{ + GLubyte rgba[4]; + fxt1_decode_1(map, rowStride, i, j, rgba); + texel[RCOMP] = UBYTE_TO_FLOAT(rgba[RCOMP]); + texel[GCOMP] = UBYTE_TO_FLOAT(rgba[GCOMP]); + texel[BCOMP] = UBYTE_TO_FLOAT(rgba[BCOMP]); + texel[ACOMP] = 1.0F; +} + + +static void +fetch_rgba_fxt1(const GLubyte *map, const GLuint imageOffsets[], + GLint rowStride, GLint i, GLint j, GLint k, GLfloat *texel) +{ + GLubyte rgba[4]; + fxt1_decode_1(map, rowStride, i, j, rgba); + texel[RCOMP] = UBYTE_TO_FLOAT(rgba[RCOMP]); + texel[GCOMP] = UBYTE_TO_FLOAT(rgba[GCOMP]); + texel[BCOMP] = UBYTE_TO_FLOAT(rgba[BCOMP]); + texel[ACOMP] = UBYTE_TO_FLOAT(rgba[ACOMP]); +} + + +compressed_fetch_func +_mesa_get_fxt_fetch_func(gl_format format) +{ + switch (format) { + case MESA_FORMAT_RGB_FXT1: + return fetch_rgb_fxt1; + case MESA_FORMAT_RGBA_FXT1: + return fetch_rgba_fxt1; + default: + return NULL; + } +} diff --git a/src/mesa/main/texcompress_fxt1.h b/src/mesa/main/texcompress_fxt1.h index 2a8b8d6538c..f60f19675d2 100644 --- a/src/mesa/main/texcompress_fxt1.h +++ b/src/mesa/main/texcompress_fxt1.h @@ -45,4 +45,7 @@ extern void _mesa_fetch_texel_2d_f_rgb_fxt1(const struct swrast_texture_image *texImage, GLint i, GLint j, GLint k, GLfloat *texel); +compressed_fetch_func +_mesa_get_fxt_fetch_func(gl_format format); + #endif /* TEXCOMPRESS_FXT1_H */