radeonsi: make sure fmask expand is done if needed
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Thu, 19 Dec 2019 18:54:16 +0000 (19:54 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 15 Jan 2020 10:10:15 +0000 (10:10 +0000)
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2248
Fixes: 095a58204d9 ("radeonsi: expand FMASK before MSAA image stores are used")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3174>

src/gallium/drivers/radeonsi/si_blit.c

index 70ad55d8a41b6e470bea641ad2848ce05a4f0751..854065aba6b450ccf389260890504c71fac537b9 100644 (file)
@@ -444,7 +444,7 @@ static void si_blit_decompress_color(struct si_context *sctx,
        if (!need_dcc_decompress)
                level_mask &= tex->dirty_level_mask;
        if (!level_mask)
-               return;
+               goto expand_fmask;
 
        if (unlikely(sctx->log))
                u_log_printf(sctx->log,
@@ -515,6 +515,7 @@ static void si_blit_decompress_color(struct si_context *sctx,
                                   vi_dcc_enabled(tex, first_level),
                                   tex->surface.u.gfx9.dcc.pipe_aligned);
 
+expand_fmask:
        if (need_fmask_expand && tex->surface.fmask_offset && tex->fmask_is_not_identity) {
                si_compute_expand_fmask(&sctx->b, &tex->buffer.b.b);
                tex->fmask_is_not_identity = false;