mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
panfrost: Implement Z32F(_S8) support
Z32F uses a dediacted float path. Z32F_S8 uses separate stencil planes in the hardware, lowered via u_transfer_helper. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
479185a1cd
commit
676b9339dd
2 changed files with 16 additions and 0 deletions
|
|
@ -313,6 +313,20 @@ panfrost_mfbd_set_zsbuf(
|
|||
fbx->flags |= 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 |= 0xA;
|
||||
fb->mfbd_flags ^= 0x100;
|
||||
fb->mfbd_flags |= 0x200;
|
||||
} else if (surf->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT) {
|
||||
fbx->flags |= 0x1000A;
|
||||
fb->mfbd_flags ^= 0x100;
|
||||
fb->mfbd_flags |= 0x201;
|
||||
|
||||
struct panfrost_resource *stencil = rsrc->separate_stencil;
|
||||
struct panfrost_slice stencil_slice = stencil->slices[level];
|
||||
|
||||
fbx->ds_linear.stencil = stencil->bo->gpu + stencil_slice.offset;
|
||||
fbx->ds_linear.stencil_stride = stencil_slice.stride;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -428,6 +428,8 @@ panfrost_is_format_supported( struct pipe_screen *screen,
|
|||
case PIPE_FORMAT_Z24_UNORM_S8_UINT:
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_Z32_UNORM:
|
||||
case PIPE_FORMAT_Z32_FLOAT:
|
||||
case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue