Mesa (master): gallium/format: Add a helper to combine separate Z24 and S8 stencil.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 15 06:36:46 UTC 2018
Module: Mesa
Branch: master
Commit: c3d219837af66b4299ab7e746b65ff33a0a6ca0d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3d219837af66b4299ab7e746b65ff33a0a6ca0d
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Mon Jul 30 15:20:00 2018 -0700
gallium/format: Add a helper to combine separate Z24 and S8 stencil.
This new function takes separate Z24 depth and S8 stencil sources,
and packs them into a single combined Z24S8 buffer.
Reviewed-by: Eric Anholt <eric at anholt.net>
---
src/gallium/auxiliary/util/u_format_zs.c | 20 ++++++++++++++++++++
src/gallium/auxiliary/util/u_format_zs.h | 2 ++
2 files changed, 22 insertions(+)
diff --git a/src/gallium/auxiliary/util/u_format_zs.c b/src/gallium/auxiliary/util/u_format_zs.c
index 4ad3a0c647..4b801d2dcf 100644
--- a/src/gallium/auxiliary/util/u_format_zs.c
+++ b/src/gallium/auxiliary/util/u_format_zs.c
@@ -449,6 +449,26 @@ 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)
+{
+ unsigned x, y;
+ for (y = 0; y < height; ++y) {
+ const uint32_t *z_src = z_src_row;
+ const uint8_t *s_src = s_src_row;
+ uint32_t *dst = (uint32_t *)dst_row;
+ for (x = 0; x < width; ++x) {
+ *dst++ = (*z_src++ & 0x00ffffff) | (*s_src++ << 24);
+ }
+ dst_row += dst_stride / sizeof(*dst_row);
+ z_src_row += z_src_stride / sizeof(*z_src_row);
+ s_src_row += s_src_stride / sizeof(*s_src_row);
+ }
+}
+
+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)
diff --git a/src/gallium/auxiliary/util/u_format_zs.h b/src/gallium/auxiliary/util/u_format_zs.h
index adddfaf3a7..160919dde7 100644
--- a/src/gallium/auxiliary/util/u_format_zs.h
+++ b/src/gallium/auxiliary/util/u_format_zs.h
@@ -112,6 +112,8 @@ util_format_z24_unorm_s8_uint_unpack_s_8uint(uint8_t *dst_row, unsigned dst_stri
void
util_format_z24_unorm_s8_uint_pack_s_8uint(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_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, const 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