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