X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Futil%2Fu_format_zs.c;h=ff584769d12c8fc03530e9fb5ef0f44c1d61865e;hb=37db383abbec071e2b3d26d0a531ec8296705b63;hp=69f2f2971f7a939f072afad482fed83850804fda;hpb=6a7ca4ef2cd3f39d3b5e77051cb3f3175e9e60df;p=mesa.git diff --git a/src/gallium/auxiliary/util/u_format_zs.c b/src/gallium/auxiliary/util/u_format_zs.c index 69f2f2971f7..ff584769d12 100644 --- a/src/gallium/auxiliary/util/u_format_zs.c +++ b/src/gallium/auxiliary/util/u_format_zs.c @@ -26,9 +26,8 @@ **************************************************************************/ -#include "u_debug.h" -#include "u_math.h" #include "u_format_zs.h" +#include "util/u_math.h" /* @@ -448,6 +447,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,