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@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6082>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user