diff options
author | Dave Airlie <[email protected]> | 2014-09-16 15:33:29 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2014-09-17 11:27:25 +1000 |
commit | ebcb2ee989b9839e52f2789a457fb806d1fad1e7 (patch) | |
tree | 83055feaa7244c725cc4a829074599a2124e1bde /src/gallium | |
parent | 2b6711cc5fbb06620f46d3a42823bf03b58e9e34 (diff) |
util: move shared rgtc code to util (v2)
This was being shared using a ../../ get out of gallium into
mesa, and I swore when I did it I'd fix things when we got a util
dir, we did, so I have.
v2: move RGTC_DEBUG define
Reviewed-by: Jason Ekstrand <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/auxiliary/util/u_format_latc.c | 72 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format_rgtc.c | 92 |
2 files changed, 46 insertions, 118 deletions
diff --git a/src/gallium/auxiliary/util/u_format_latc.c b/src/gallium/auxiliary/util/u_format_latc.c index caab7e87a3f..31d72b5a0ab 100644 --- a/src/gallium/auxiliary/util/u_format_latc.c +++ b/src/gallium/auxiliary/util/u_format_latc.c @@ -27,27 +27,16 @@ #include "u_format.h" #include "u_format_rgtc.h" #include "u_format_latc.h" - -static void u_format_unsigned_encode_rgtc_ubyte(uint8_t *blkaddr, uint8_t srccolors[4][4], - int numxpixels, int numypixels); - -static void u_format_unsigned_fetch_texel_rgtc(unsigned srcRowStride, const uint8_t *pixdata, - unsigned i, unsigned j, uint8_t *value, unsigned comps); - -static void u_format_signed_encode_rgtc_ubyte(int8_t *blkaddr, int8_t srccolors[4][4], - int numxpixels, int numypixels); - -static void u_format_signed_fetch_texel_rgtc(unsigned srcRowStride, const int8_t *pixdata, - unsigned i, unsigned j, int8_t *value, unsigned comps); +#include "util/rgtc.h" void util_format_latc1_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) { /* Fix warnings here: */ - (void) u_format_unsigned_encode_rgtc_ubyte; - (void) u_format_signed_encode_rgtc_ubyte; + (void) util_format_unsigned_encode_rgtc_ubyte; + (void) util_format_signed_encode_rgtc_ubyte; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 1); dst[1] = dst[0]; dst[2] = dst[0]; dst[3] = 255; @@ -79,7 +68,7 @@ util_format_latc1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; uint8_t tmp_r; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); dst[0] = dst[1] = dst[2] = ubyte_to_float(tmp_r); @@ -103,7 +92,7 @@ util_format_latc1_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigne { uint8_t tmp_r; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); dst[0] = dst[1] = dst[2] = ubyte_to_float(tmp_r); @@ -147,7 +136,7 @@ util_format_latc1_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; int8_t tmp_r; - u_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); + util_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); dst[0] = dst[1] = dst[2] = byte_to_float_tex(tmp_r); @@ -165,7 +154,7 @@ util_format_latc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigne { int8_t tmp_r; - u_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 1); + util_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 1); dst[0] = dst[1] = dst[2] = byte_to_float_tex(tmp_r); @@ -176,10 +165,10 @@ util_format_latc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigne void util_format_latc2_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) { - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 2); dst[1] = dst[0]; dst[2] = dst[0]; - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, dst + 3, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, dst + 3, 2); } void @@ -213,8 +202,8 @@ util_format_latc2_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; uint8_t tmp_r, tmp_g; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); dst[0] = dst[1] = dst[2] = ubyte_to_float(tmp_r); @@ -232,8 +221,8 @@ util_format_latc2_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigne { uint8_t tmp_r, tmp_g; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); dst[0] = dst[1] = dst[2] = ubyte_to_float(tmp_r); @@ -272,8 +261,8 @@ util_format_latc2_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; int8_t tmp_r, tmp_g; - u_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); - u_format_signed_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); + util_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); + util_format_signed_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); dst[0] = dst[1] = dst[2] = byte_to_float_tex(tmp_r); @@ -297,36 +286,11 @@ util_format_latc2_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigne { int8_t tmp_r, tmp_g; - u_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 2); - u_format_signed_fetch_texel_rgtc(0, (int8_t *)src + 8, i, j, &tmp_g, 2); + util_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 2); + util_format_signed_fetch_texel_rgtc(0, (int8_t *)src + 8, i, j, &tmp_g, 2); dst[0] = dst[1] = dst[2] = byte_to_float_tex(tmp_r); dst[3] = byte_to_float_tex(tmp_g); } - -#define TAG(x) u_format_unsigned_##x -#define TYPE uint8_t -#define T_MIN 0 -#define T_MAX 255 - -#include "../../../mesa/main/texcompress_rgtc_tmp.h" - -#undef TYPE -#undef TAG -#undef T_MIN -#undef T_MAX - - -#define TAG(x) u_format_signed_##x -#define TYPE int8_t -#define T_MIN (int8_t)-128 -#define T_MAX (int8_t)127 - -#include "../../../mesa/main/texcompress_rgtc_tmp.h" - -#undef TYPE -#undef TAG -#undef T_MIN -#undef T_MAX diff --git a/src/gallium/auxiliary/util/u_format_rgtc.c b/src/gallium/auxiliary/util/u_format_rgtc.c index 758e337749e..15969174358 100644 --- a/src/gallium/auxiliary/util/u_format_rgtc.c +++ b/src/gallium/auxiliary/util/u_format_rgtc.c @@ -26,23 +26,12 @@ #include "u_math.h" #include "u_format.h" #include "u_format_rgtc.h" - -static void u_format_unsigned_encode_rgtc_ubyte(uint8_t *blkaddr, uint8_t srccolors[4][4], - int numxpixels, int numypixels); - -static void u_format_unsigned_fetch_texel_rgtc(unsigned srcRowStride, const uint8_t *pixdata, - unsigned i, unsigned j, uint8_t *value, unsigned comps); - -static void u_format_signed_encode_rgtc_ubyte(int8_t *blkaddr, int8_t srccolors[4][4], - int numxpixels, int numypixels); - -static void u_format_signed_fetch_texel_rgtc(unsigned srcRowStride, const int8_t *pixdata, - unsigned i, unsigned j, int8_t *value, unsigned comps); +#include "util/rgtc.h" void util_format_rgtc1_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) { - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 1); dst[1] = 0; dst[2] = 0; dst[3] = 255; @@ -61,7 +50,7 @@ util_format_rgtc1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride for(j = 0; j < bh; ++j) { for(i = 0; i < bw; ++i) { uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 1); dst[1] = 0; dst[2] = 0; dst[3] = 255; @@ -89,7 +78,7 @@ util_format_rgtc1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, tmp[j][i] = src_row[(y + j)*src_stride/sizeof(*src_row) + (x + i)*4]; } } - u_format_unsigned_encode_rgtc_ubyte(dst, tmp, 4, 4); + util_format_unsigned_encode_rgtc_ubyte(dst, tmp, 4, 4); dst += bytes_per_block; } dst_row += dst_stride / sizeof(*dst_row); @@ -108,7 +97,7 @@ util_format_rgtc1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; uint8_t tmp_r; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); dst[0] = ubyte_to_float(tmp_r); dst[1] = 0.0; dst[2] = 0.0; @@ -136,7 +125,7 @@ util_format_rgtc1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, c tmp[j][i] = float_to_ubyte(src_row[(y + j)*src_stride/sizeof(*src_row) + (x + i)*4]); } } - u_format_unsigned_encode_rgtc_ubyte(dst, tmp, 4, 4); + util_format_unsigned_encode_rgtc_ubyte(dst, tmp, 4, 4); dst += bytes_per_block; } dst_row += dst_stride / sizeof(*dst_row); @@ -147,7 +136,7 @@ void util_format_rgtc1_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) { uint8_t tmp_r; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); dst[0] = ubyte_to_float(tmp_r); dst[1] = 0.0; dst[2] = 0.0; @@ -187,7 +176,7 @@ util_format_rgtc1_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, c tmp[j][i] = float_to_byte_tex(src_row[(y + j)*src_stride/sizeof(*src_row) + (x + i)*4]); } } - u_format_signed_encode_rgtc_ubyte(dst, tmp, 4, 4); + util_format_signed_encode_rgtc_ubyte(dst, tmp, 4, 4); dst += bytes_per_block; } dst_row += dst_stride / sizeof(*dst_row); @@ -206,7 +195,7 @@ util_format_rgtc1_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; int8_t tmp_r; - u_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); + util_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 1); dst[0] = byte_to_float_tex(tmp_r); dst[1] = 0.0; dst[2] = 0.0; @@ -223,7 +212,7 @@ void util_format_rgtc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) { int8_t tmp_r; - u_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 1); + util_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 1); dst[0] = byte_to_float_tex(tmp_r); dst[1] = 0.0; dst[2] = 0.0; @@ -234,8 +223,8 @@ util_format_rgtc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigne void util_format_rgtc2_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j) { - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 2); - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, dst + 1, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, dst + 1, 2); dst[2] = 0; dst[3] = 255; } @@ -253,8 +242,8 @@ util_format_rgtc2_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride for(j = 0; j < bh; ++j) { for(i = 0; i < bw; ++i) { uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 2); - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, dst + 1, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, dst, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, dst + 1, 2); dst[2] = 0; dst[3] = 255; } @@ -282,8 +271,8 @@ util_format_rgtc2_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, tmp_g[j][i] = src_row[((y + j)*src_stride/sizeof(*src_row) + (x + i)*4) + 1]; } } - u_format_unsigned_encode_rgtc_ubyte(dst, tmp_r, 4, 4); - u_format_unsigned_encode_rgtc_ubyte(dst + 8, tmp_g, 4, 4); + util_format_unsigned_encode_rgtc_ubyte(dst, tmp_r, 4, 4); + util_format_unsigned_encode_rgtc_ubyte(dst + 8, tmp_g, 4, 4); dst += bytes_per_block; } dst_row += dst_stride / sizeof(*dst_row); @@ -307,8 +296,8 @@ util_format_rxtc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, c tmp_g[j][i] = float_to_ubyte(src_row[(y + j)*src_stride/sizeof(*src_row) + (x + i)*4 + chan2off]); } } - u_format_unsigned_encode_rgtc_ubyte(dst, tmp_r, 4, 4); - u_format_unsigned_encode_rgtc_ubyte(dst + 8, tmp_g, 4, 4); + util_format_unsigned_encode_rgtc_ubyte(dst, tmp_r, 4, 4); + util_format_unsigned_encode_rgtc_ubyte(dst + 8, tmp_g, 4, 4); dst += bytes_per_block; } dst_row += dst_stride / sizeof(*dst_row); @@ -333,8 +322,8 @@ util_format_rgtc2_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; uint8_t tmp_r, tmp_g; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); dst[0] = ubyte_to_float(tmp_r); dst[1] = ubyte_to_float(tmp_g); dst[2] = 0.0; @@ -351,8 +340,8 @@ void util_format_rgtc2_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) { uint8_t tmp_r, tmp_g; - u_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); - u_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); + util_format_unsigned_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); + util_format_unsigned_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); dst[0] = ubyte_to_float(tmp_r); dst[1] = ubyte_to_float(tmp_g); dst[2] = 0.0; @@ -390,8 +379,8 @@ util_format_rgtc2_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, c for(i = 0; i < 4; ++i) { float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4; int8_t tmp_r, tmp_g; - u_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); - u_format_signed_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); + util_format_signed_fetch_texel_rgtc(0, src, i, j, &tmp_r, 2); + util_format_signed_fetch_texel_rgtc(0, src + 8, i, j, &tmp_g, 2); dst[0] = byte_to_float_tex(tmp_r); dst[1] = byte_to_float_tex(tmp_g); dst[2] = 0.0; @@ -421,8 +410,8 @@ util_format_rxtc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, c tmp_g[j][i] = float_to_byte_tex(src_row[(y + j)*src_stride/sizeof(*src_row) + (x + i)*4 + chan2off]); } } - u_format_signed_encode_rgtc_ubyte(dst, tmp_r, 4, 4); - u_format_signed_encode_rgtc_ubyte(dst + 8, tmp_g, 4, 4); + util_format_signed_encode_rgtc_ubyte(dst, tmp_r, 4, 4); + util_format_signed_encode_rgtc_ubyte(dst + 8, tmp_g, 4, 4); dst += bytes_per_block; } dst_row += dst_stride / sizeof(*dst_row); @@ -439,36 +428,11 @@ void util_format_rgtc2_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j) { int8_t tmp_r, tmp_g; - u_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 2); - u_format_signed_fetch_texel_rgtc(0, (int8_t *)src + 8, i, j, &tmp_g, 2); + util_format_signed_fetch_texel_rgtc(0, (int8_t *)src, i, j, &tmp_r, 2); + util_format_signed_fetch_texel_rgtc(0, (int8_t *)src + 8, i, j, &tmp_g, 2); dst[0] = byte_to_float_tex(tmp_r); dst[1] = byte_to_float_tex(tmp_g); dst[2] = 0.0; dst[3] = 1.0; } - -#define TAG(x) u_format_unsigned_##x -#define TYPE uint8_t -#define T_MIN 0 -#define T_MAX 255 - -#include "../../../mesa/main/texcompress_rgtc_tmp.h" - -#undef TYPE -#undef TAG -#undef T_MIN -#undef T_MAX - - -#define TAG(x) u_format_signed_##x -#define TYPE int8_t -#define T_MIN (int8_t)-128 -#define T_MAX (int8_t)127 - -#include "../../../mesa/main/texcompress_rgtc_tmp.h" - -#undef TYPE -#undef TAG -#undef T_MIN -#undef T_MAX |