Mesa (master): util/format: add some ZS helpers for vallium

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Aug 17 05:01:07 UTC 2020


Module: Mesa
Branch: master
Commit: 5a9eba4acd0b202967d312851a3cc143275fb653
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a9eba4acd0b202967d312851a3cc143275fb653

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Jun 19 16:44:09 2020 +1000

util/format: add some ZS helpers for vallium

The vallium layer has a requirement to insert and extra the 24-bit
unorm value as a unorm value (not as a float etc). Add helpers
to facilitate that.

Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6082>

---

 src/util/format/u_format_zs.c | 40 ++++++++++++++++++++++++++++++++++++++++
 src/util/format/u_format_zs.h |  6 ++++++
 2 files changed, 46 insertions(+)

diff --git a/src/util/format/u_format_zs.c b/src/util/format/u_format_zs.c
index bbd7e02e563..197e881dbc0 100644
--- a/src/util/format/u_format_zs.c
+++ b/src/util/format/u_format_zs.c
@@ -419,6 +419,46 @@ util_format_z24_unorm_s8_uint_pack_z_float(uint8_t *dst_row, unsigned dst_stride
    }
 }
 
+
+void
+util_format_z24_unorm_s8_uint_unpack_z24(uint8_t *dst_row, unsigned dst_stride,
+                                         const uint8_t *src_row, unsigned src_stride,
+                                         unsigned width, unsigned height)
+{
+   unsigned x, y;
+   for(y = 0; y < height; ++y) {
+      uint32_t *dst = (uint32_t *)dst_row;
+      const uint32_t *src = (const uint32_t *)src_row;
+      for(x = 0; x < width; ++x) {
+         uint32_t value =  util_cpu_to_le32(*src++);
+         *dst++ = (value & 0xffffff);
+      }
+      src_row += src_stride/sizeof(*src_row);
+      dst_row += dst_stride/sizeof(*dst_row);
+   }
+}
+
+void
+util_format_z24_unorm_s8_uint_pack_z24(uint8_t *dst_row, unsigned dst_stride,
+                                       const uint8_t *src_row, unsigned src_stride,
+                                       unsigned width, unsigned height)
+{
+   unsigned x, y;
+   for(y = 0; y < height; ++y) {
+      const uint32_t *src = (const uint32_t *)src_row;
+      uint32_t *dst = (uint32_t *)dst_row;
+      for(x = 0; x < width; ++x) {
+         uint32_t value = util_le32_to_cpu(*dst);
+         value &= 0xff000000;
+         value |= *src & 0xffffff;
+         src++;
+         *dst++ = util_cpu_to_le32(value);
+      }
+      dst_row += dst_stride/sizeof(*dst_row);
+      src_row += src_stride/sizeof(*src_row);
+   }
+}
+
 void
 util_format_z24_unorm_s8_uint_unpack_z_32unorm(uint32_t *dst_row, unsigned dst_stride,
                                                   const uint8_t *src_row, unsigned src_stride,
diff --git a/src/util/format/u_format_zs.h b/src/util/format/u_format_zs.h
index 61fb960f9c1..87df7a4ff58 100644
--- a/src/util/format/u_format_zs.h
+++ b/src/util/format/u_format_zs.h
@@ -115,6 +115,12 @@ util_format_z24_unorm_s8_uint_pack_s_8uint(uint8_t *dst_row, unsigned dst_stride
 void
 util_format_z24_unorm_s8_uint_pack_separate(uint8_t *dst_row, unsigned dst_stride, const uint32_t *z_src_row, unsigned z_src_stride, const uint8_t *s_src_row, unsigned s_src_stride, unsigned width, unsigned height);
 
+void
+util_format_z24_unorm_s8_uint_unpack_z24(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_z24_unorm_s8_uint_pack_z24(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
 void
 util_format_s8_uint_z24_unorm_unpack_z_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
 



More information about the mesa-commit mailing list