Module: Mesa Branch: main Commit: c0346ac170f785bb3c91f132326865308055f578 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0346ac170f785bb3c91f132326865308055f578
Author: Chia-I Wu <[email protected]> Date: Wed Nov 30 13:32:55 2022 -0800 Revert "freedreno/a6xx: Remove unneeded MSAA clear fallback" This reverts commit ded82cf4bdd9a74eded2a9a95ab14e2c0d907c0a and fixes $ deqp-gles31 --deqp-gl-config-name=rgba8888d24s8ms4 \ -n dEQP-GLES31.functional.primitive_bounding_box.depth.* Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20085> --- src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 5 ----- src/gallium/drivers/freedreno/a6xx/fd6_draw.c | 10 +++------- src/gallium/drivers/freedreno/freedreno_screen.h | 1 - 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c index 010e43c150f..6976e6c707f 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c @@ -806,11 +806,6 @@ fd6_clear_surface(struct fd_context *ctx, struct fd_ringbuffer *ring, } uint32_t nr_samples = fd_resource_nr_samples(psurf->texture); - - /* TODO the trick of multiplying the dimensions for MSAA sysmem clears - * works for linear, but falls apart with tiled/ubwc. - */ - OUT_PKT4(ring, REG_A6XX_GRAS_2D_DST_TL, 2); OUT_RING(ring, A6XX_GRAS_2D_DST_TL_X(box2d->x * nr_samples) | A6XX_GRAS_2D_DST_TL_Y(box2d->y)); diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c index 3fffb2a88f8..3ce6e7d5e2c 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c @@ -475,13 +475,9 @@ fd6_clear(struct fd_context *ctx, unsigned buffers, const bool has_depth = pfb->zsbuf; unsigned color_buffers = buffers >> 2; - /* multisample clear does not work properly for sysmem: */ - if (pfb->samples > 1) { - /* layered rendering forces sysmem, so just bail now: */ - if (pfb->layers > 1) - return false; - ctx->batch->gmem_reason |= FD_GMEM_MSAA_CLEAR; - } + /* we need to do multisample clear on 3d pipe, so fallback to u_blitter: */ + if (pfb->samples > 1) + return false; /* If we're clearing after draws, fallback to 3D pipe clears. We could * use blitter clears in the draw batch but then we'd have to patch up the diff --git a/src/gallium/drivers/freedreno/freedreno_screen.h b/src/gallium/drivers/freedreno/freedreno_screen.h index c76b3d3d6b6..0aa0e2357c4 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.h +++ b/src/gallium/drivers/freedreno/freedreno_screen.h @@ -57,7 +57,6 @@ enum fd_gmem_reason { FD_GMEM_BLEND_ENABLED = BIT(3), FD_GMEM_LOGICOP_ENABLED = BIT(4), FD_GMEM_FB_READ = BIT(5), - FD_GMEM_MSAA_CLEAR = BIT(6), }; struct fd_screen {
