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

Reply via email to