Module: Mesa Branch: main Commit: 091e6e37c207ff18c54f2837975b515735a588b2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=091e6e37c207ff18c54f2837975b515735a588b2
Author: Erik Faye-Lund <[email protected]> Date: Wed Aug 10 13:23:08 2022 +0200 mesa/main: add _mesa_unpack_rgtc Reviewed-by: Alyssa Rosenzweig <[email protected]> Acked-by: Eric Engestrom <[email protected]> Tested-by: Eric Engestrom <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18248> --- src/mesa/main/texcompress_rgtc.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/mesa/main/texcompress_rgtc.h | 8 ++++++++ 2 files changed, 48 insertions(+) diff --git a/src/mesa/main/texcompress_rgtc.c b/src/mesa/main/texcompress_rgtc.c index 6839432966f..3c7fa287986 100644 --- a/src/mesa/main/texcompress_rgtc.c +++ b/src/mesa/main/texcompress_rgtc.c @@ -42,6 +42,7 @@ #include "mipmap.h" #include "texcompress.h" #include "util/rgtc.h" +#include "util/format/u_format_rgtc.h" #include "texcompress_rgtc.h" #include "texstore.h" @@ -456,3 +457,42 @@ _mesa_get_compressed_rgtc_func(mesa_format format) return NULL; } } + +void +_mesa_unpack_rgtc(uint8_t *dst_row, + unsigned dst_stride, + const uint8_t *src_row, + unsigned src_stride, + unsigned src_width, + unsigned src_height, + mesa_format format) +{ + switch (format) { + case MESA_FORMAT_R_RGTC1_UNORM: + util_format_rgtc1_unorm_unpack_r_8unorm(dst_row, dst_stride, + src_row, src_stride, + src_width, src_height); + break; + + case MESA_FORMAT_R_RGTC1_SNORM: + util_format_rgtc1_snorm_unpack_r_8snorm((int8_t *)dst_row, dst_stride, + src_row, src_stride, + src_width, src_height); + break; + + case MESA_FORMAT_RG_RGTC2_UNORM: + util_format_rgtc2_unorm_unpack_rg_8unorm(dst_row, dst_stride, + src_row, src_stride, + src_width, src_height); + break; + + case MESA_FORMAT_RG_RGTC2_SNORM: + util_format_rgtc2_snorm_unpack_rg_8snorm((int8_t *)dst_row, dst_stride, + src_row, src_stride, + src_width, src_height); + break; + + default: + unreachable("unexpected format"); + } +} diff --git a/src/mesa/main/texcompress_rgtc.h b/src/mesa/main/texcompress_rgtc.h index e9e24950adf..ce08e00b291 100644 --- a/src/mesa/main/texcompress_rgtc.h +++ b/src/mesa/main/texcompress_rgtc.h @@ -43,5 +43,13 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS); extern compressed_fetch_func _mesa_get_compressed_rgtc_func(mesa_format format); +extern void +_mesa_unpack_rgtc(uint8_t *dst_row, + unsigned dst_stride, + const uint8_t *src_row, + unsigned src_stride, + unsigned src_width, + unsigned src_height, + mesa_format format); #endif
