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 {

Reply via email to