radeonsi: cosmetic changes around do_hardware_msaa_resolve
authorMarek Olšák <marek.olsak@amd.com>
Sat, 23 Jul 2022 16:29:05 +0000 (12:29 -0400)
committerMarge Bot <emma+marge@anholt.net>
Wed, 3 Aug 2022 00:57:16 +0000 (00:57 +0000)
- move gfx_level checking into the function
- rename the function
- call it in si_blit later
- set the SQTT event

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17864>

src/gallium/drivers/radeonsi/si_blit.c

index 5409552..55957ea 100644 (file)
@@ -1026,9 +1026,14 @@ static bool resolve_formats_compatible(enum pipe_format src, enum pipe_format ds
    return *need_rgb_to_bgr;
 }
 
-static bool do_hardware_msaa_resolve(struct pipe_context *ctx, const struct pipe_blit_info *info)
+static bool si_msaa_resolve_blit_via_CB(struct pipe_context *ctx, const struct pipe_blit_info *info)
 {
    struct si_context *sctx = (struct si_context *)ctx;
+
+   /* Gfx11 doesn't have CB_RESOLVE. */
+   if (sctx->gfx_level >= GFX11)
+      return false;
+
    struct si_texture *src = (struct si_texture *)info->src.resource;
    struct si_texture *dst = (struct si_texture *)info->dst.resource;
    ASSERTED struct si_texture *stmp;
@@ -1156,11 +1161,6 @@ static void si_blit(struct pipe_context *ctx, const struct pipe_blit_info *info)
    struct si_context *sctx = (struct si_context *)ctx;
    struct si_texture *sdst = (struct si_texture *)info->dst.resource;
 
-   /* Gfx11 doesn't have CB_RESOLVE. */
-   /* TODO: Use compute-based resolving instead. */
-   if (sctx->gfx_level < GFX11 && do_hardware_msaa_resolve(ctx, info))
-      return;
-
    if (sctx->gfx_level >= GFX7 &&
        (info->dst.resource->bind & PIPE_BIND_PRIME_BLIT_DST) && sdst->surface.is_linear &&
        /* Use SDMA or async compute when copying to a DRI_PRIME imported linear surface. */
@@ -1197,6 +1197,12 @@ static void si_blit(struct pipe_context *ctx, const struct pipe_blit_info *info)
    }
 
    if (unlikely(sctx->thread_trace_enabled))
+      sctx->sqtt_next_event = EventCmdResolveImage;
+
+   if (si_msaa_resolve_blit_via_CB(ctx, info))
+      return;
+
+   if (unlikely(sctx->thread_trace_enabled))
       sctx->sqtt_next_event = EventCmdCopyImage;
 
    /* Using compute for copying to a linear texture in GTT is much faster than