panfrost: Fix Z24 vs Z32 mixup

We don't actually support Z32_UNORM; the format we've been using as such
is in fact Z24X8 / Z24S8. Fix that and drop Z32_UNORM.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5069>
This commit is contained in:
Alyssa Rosenzweig 2020-05-15 19:16:56 -04:00 committed by Marge Bot
parent 861e7dcae6
commit 82792ef19f
5 changed files with 6 additions and 13 deletions

View File

@ -298,8 +298,6 @@ panfrost_mfbd_set_zsbuf(
if (panfrost_is_z24s8_variant(surf->format)) {
fbx->flags_lo |= 0x1;
} else if (surf->format == PIPE_FORMAT_Z32_UNORM) {
/* default flags (0 in bottom place) */
} else if (surf->format == PIPE_FORMAT_Z32_FLOAT) {
fbx->flags_lo |= 0xA;
fb->mfbd_flags ^= 0x100;
@ -481,7 +479,7 @@ panfrost_mfbd_fragment(struct panfrost_batch *batch, bool has_draws)
/* When scanning out, the depth buffer is immediately invalidated, so
* we don't need to waste bandwidth writing it out. This can improve
* performance substantially (Z32_UNORM 1080p @ 60fps is 475 MB/s of
* performance substantially (Z24X8_UNORM 1080p @ 60fps is 475 MB/s of
* memory bandwidth!).
*
* The exception is ReadPixels, but this is not supported on GLES so we

View File

@ -173,16 +173,12 @@ panfrost_sfbd_set_zsbuf(
return;
if (panfrost_is_z24s8_variant(surf->format)) {
/* Stencil data is interleaved with depth */
fb->stencil_buffer = fb->depth_buffer;
fb->stencil_stride = fb->depth_stride;
} else if (surf->format == PIPE_FORMAT_Z32_UNORM ||
surf->format == PIPE_FORMAT_Z32_FLOAT) {
} else if (surf->format == PIPE_FORMAT_Z32_FLOAT) {
/* No stencil, nothing to do */
} else if (surf->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT) {
/* Stencil data in separate buffer */
struct panfrost_resource *stencil = rsrc->separate_stencil;
struct panfrost_slice stencil_slice = stencil->slices[level];

View File

@ -110,9 +110,8 @@ struct panfrost_format panfrost_pipe_format_table[PIPE_FORMAT_COUNT] = {
[PIPE_FORMAT_R3G3B2_UNORM] = { MALI_RGB332_UNORM, _VT },
[PIPE_FORMAT_Z24_UNORM_S8_UINT] = { MALI_Z32_UNORM, _TZ },
[PIPE_FORMAT_Z24X8_UNORM] = { MALI_Z32_UNORM, _TZ },
[PIPE_FORMAT_Z32_UNORM] = { MALI_Z32_UNORM, _TZ },
[PIPE_FORMAT_Z24_UNORM_S8_UINT] = { MALI_Z24X8_UNORM, _TZ },
[PIPE_FORMAT_Z24X8_UNORM] = { MALI_Z24X8_UNORM, _TZ },
[PIPE_FORMAT_Z32_FLOAT] = { MALI_R32F, _TZ },
[PIPE_FORMAT_Z32_FLOAT_S8X24_UINT] = { MALI_R32F, _TZ },

View File

@ -297,7 +297,7 @@ enum mali_format {
MALI_RGB332_UNORM = MALI_FORMAT_SPECIAL | 0xb,
MALI_RGB233_UNORM = MALI_FORMAT_SPECIAL | 0xc,
MALI_Z32_UNORM = MALI_FORMAT_SPECIAL | 0xd,
MALI_Z24X8_UNORM = MALI_FORMAT_SPECIAL | 0xd,
MALI_R32_FIXED = MALI_FORMAT_SPECIAL | 0x11,
MALI_RG32_FIXED = MALI_FORMAT_SPECIAL | 0x12,
MALI_RGB32_FIXED = MALI_FORMAT_SPECIAL | 0x13,

View File

@ -54,7 +54,7 @@ char *pandecode_format(enum mali_format format)
DEFINE_CASE(RGB10_A2I);
DEFINE_CASE(RGB332_UNORM);
DEFINE_CASE(RGB233_UNORM);
DEFINE_CASE(Z32_UNORM);
DEFINE_CASE(Z24X8_UNORM);
DEFINE_CASE(R32_FIXED);
DEFINE_CASE(RG32_FIXED);
DEFINE_CASE(RGB32_FIXED);