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)) { if (panfrost_is_z24s8_variant(surf->format)) {
fbx->flags_lo |= 0x1; 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) { } else if (surf->format == PIPE_FORMAT_Z32_FLOAT) {
fbx->flags_lo |= 0xA; fbx->flags_lo |= 0xA;
fb->mfbd_flags ^= 0x100; 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 /* When scanning out, the depth buffer is immediately invalidated, so
* we don't need to waste bandwidth writing it out. This can improve * 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!). * memory bandwidth!).
* *
* The exception is ReadPixels, but this is not supported on GLES so we * The exception is ReadPixels, but this is not supported on GLES so we

View File

@ -173,16 +173,12 @@ panfrost_sfbd_set_zsbuf(
return; return;
if (panfrost_is_z24s8_variant(surf->format)) { if (panfrost_is_z24s8_variant(surf->format)) {
/* Stencil data is interleaved with depth */ /* Stencil data is interleaved with depth */
fb->stencil_buffer = fb->depth_buffer; fb->stencil_buffer = fb->depth_buffer;
fb->stencil_stride = fb->depth_stride; fb->stencil_stride = fb->depth_stride;
} else if (surf->format == PIPE_FORMAT_Z32_UNORM || } else if (surf->format == PIPE_FORMAT_Z32_FLOAT) {
surf->format == PIPE_FORMAT_Z32_FLOAT) {
/* No stencil, nothing to do */ /* No stencil, nothing to do */
} else if (surf->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT) { } else if (surf->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT) {
/* Stencil data in separate buffer */ /* Stencil data in separate buffer */
struct panfrost_resource *stencil = rsrc->separate_stencil; struct panfrost_resource *stencil = rsrc->separate_stencil;
struct panfrost_slice stencil_slice = stencil->slices[level]; 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_R3G3B2_UNORM] = { MALI_RGB332_UNORM, _VT },
[PIPE_FORMAT_Z24_UNORM_S8_UINT] = { MALI_Z32_UNORM, _TZ }, [PIPE_FORMAT_Z24_UNORM_S8_UINT] = { MALI_Z24X8_UNORM, _TZ },
[PIPE_FORMAT_Z24X8_UNORM] = { MALI_Z32_UNORM, _TZ }, [PIPE_FORMAT_Z24X8_UNORM] = { MALI_Z24X8_UNORM, _TZ },
[PIPE_FORMAT_Z32_UNORM] = { MALI_Z32_UNORM, _TZ },
[PIPE_FORMAT_Z32_FLOAT] = { MALI_R32F, _TZ }, [PIPE_FORMAT_Z32_FLOAT] = { MALI_R32F, _TZ },
[PIPE_FORMAT_Z32_FLOAT_S8X24_UINT] = { 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_RGB332_UNORM = MALI_FORMAT_SPECIAL | 0xb,
MALI_RGB233_UNORM = MALI_FORMAT_SPECIAL | 0xc, 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_R32_FIXED = MALI_FORMAT_SPECIAL | 0x11,
MALI_RG32_FIXED = MALI_FORMAT_SPECIAL | 0x12, MALI_RG32_FIXED = MALI_FORMAT_SPECIAL | 0x12,
MALI_RGB32_FIXED = MALI_FORMAT_SPECIAL | 0x13, 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(RGB10_A2I);
DEFINE_CASE(RGB332_UNORM); DEFINE_CASE(RGB332_UNORM);
DEFINE_CASE(RGB233_UNORM); DEFINE_CASE(RGB233_UNORM);
DEFINE_CASE(Z32_UNORM); DEFINE_CASE(Z24X8_UNORM);
DEFINE_CASE(R32_FIXED); DEFINE_CASE(R32_FIXED);
DEFINE_CASE(RG32_FIXED); DEFINE_CASE(RG32_FIXED);
DEFINE_CASE(RGB32_FIXED); DEFINE_CASE(RGB32_FIXED);