Mesa (main): util: Fix translate from block compressed to rgba

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 12 20:50:16 UTC 2021


Module: Mesa
Branch: main
Commit: 6a0e703512d7e22cbd3fddf3ae20ba46f53dd199
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a0e703512d7e22cbd3fddf3ae20ba46f53dd199

Author: Axel Davy <davyaxel0 at gmail.com>
Date:   Tue Aug 10 20:52:45 2021 +0200

util: Fix translate from block compressed to rgba

Since
2b5178ee util: Switch the non-block formats to unpacking rgba rows instead of rects,
compressed formats define unpack_rgba_8unorm_rect instead
of unpack_rgba_8unorm.

Fixes the u_format_translate check to take this into account.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5201
Fixes: 2b5178ee ("util: Switch the non-block formats to unpacking rgba rows instead of rects")

Signed-off-by: Axel Davy <davyaxel0 at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12315>

---

 src/util/format/u_format.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c
index 59bb7d287da..c49b3788c82 100644
--- a/src/util/format/u_format.c
+++ b/src/util/format/u_format.c
@@ -740,7 +740,7 @@ util_format_translate(enum pipe_format dst_format,
       unsigned tmp_stride;
       uint8_t *tmp_row;
 
-      if (!unpack->unpack_rgba_8unorm ||
+      if ((!unpack->unpack_rgba_8unorm && !unpack->unpack_rgba_8unorm_rect) ||
           !pack->pack_rgba_8unorm) {
          return FALSE;
       }
@@ -802,7 +802,7 @@ util_format_translate(enum pipe_format dst_format,
       unsigned tmp_stride;
       unsigned int *tmp_row;
 
-      if (!unpack->unpack_rgba ||
+      if ((!unpack->unpack_rgba && !unpack->unpack_rgba_rect) ||
           !pack->pack_rgba_uint) {
          return FALSE;
       }
@@ -832,7 +832,7 @@ util_format_translate(enum pipe_format dst_format,
       unsigned tmp_stride;
       float *tmp_row;
 
-      if (!unpack->unpack_rgba ||
+      if ((!unpack->unpack_rgba && !unpack->unpack_rgba_rect) ||
           !pack->pack_rgba_float) {
          return FALSE;
       }



More information about the mesa-commit mailing list