mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-03 07:48:07 +02:00
panfrost/mfbd: Implement linear depth buffers
This removes a clunky hack where the depth buffer was enabled during the *clear*, instead of during depth buffer linking. That said, this does not yet support writeback like AFBC depth buffers. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
parent
23e0135723
commit
9bf6024c6b
1 changed files with 9 additions and 10 deletions
|
|
@ -58,8 +58,6 @@ panfrost_mfbd_clear(
|
|||
struct bifrost_fb_extra *fbx,
|
||||
struct bifrost_render_target *rt)
|
||||
{
|
||||
struct panfrost_context *ctx = job->ctx;
|
||||
|
||||
if (job->clear & PIPE_CLEAR_COLOR) {
|
||||
rt->clear_color_1 = job->clear_color;
|
||||
rt->clear_color_2 = job->clear_color;
|
||||
|
|
@ -74,14 +72,6 @@ panfrost_mfbd_clear(
|
|||
if (job->clear & PIPE_CLEAR_STENCIL) {
|
||||
fb->clear_stencil = job->clear_stencil;
|
||||
}
|
||||
|
||||
if (job->clear & (PIPE_CLEAR_DEPTH | PIPE_CLEAR_STENCIL)) {
|
||||
/* Setup combined 24/8 depth/stencil */
|
||||
fb->unk3 |= MALI_MFBD_EXTRA;
|
||||
fbx->flags = 0x405;
|
||||
fbx->ds_linear.depth = ctx->depth_stencil_buffer.gpu;
|
||||
fbx->ds_linear.depth_stride = ctx->pipe_framebuffer.width * 4;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -155,6 +145,15 @@ panfrost_mfbd_set_zsbuf(
|
|||
fbx->ds_afbc.padding = 0x1000;
|
||||
|
||||
fb->unk3 |= MALI_MFBD_DEPTH_WRITE;
|
||||
} else if (rsrc->bo->layout == PAN_LINEAR) {
|
||||
fb->unk3 |= MALI_MFBD_EXTRA;
|
||||
fbx->flags |= MALI_EXTRA_PRESENT | MALI_EXTRA_ZS | 0x1;
|
||||
|
||||
fbx->ds_linear.depth = rsrc->bo->gpu[0];
|
||||
fbx->ds_linear.depth_stride =
|
||||
util_format_get_stride(surf->format, surf->texture->width0);
|
||||
} else {
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue