From 5ab9a9c0ccff8218e9625f43a25535cf7d1d8ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 2 Jun 2014 13:51:29 +0200 Subject: [PATCH] r600g,radeonsi: don't use hardware MSAA resolve if dst is fast-cleared MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It doesn't work and our docs say so too. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Michel Dänzer (cherry picked from commit d2261918202697febed0de18f66416e273001088) --- src/gallium/drivers/r600/r600_blit.c | 3 ++- src/gallium/drivers/radeonsi/si_blit.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 1a2a9112631..bbc64ac79a2 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -789,7 +789,8 @@ static bool do_hardware_msaa_resolve(struct pipe_context *ctx, info->src.box.width == dst_width && info->src.box.height == dst_height && info->src.box.depth == 1 && - dst->surface.level[info->dst.level].mode >= RADEON_SURF_MODE_1D) { + dst->surface.level[info->dst.level].mode >= RADEON_SURF_MODE_1D && + (!dst->cmask.size || !dst->dirty_level_mask) /* dst cannot be fast-cleared */) { r600_blitter_begin(ctx, R600_COLOR_RESOLVE); util_blitter_custom_resolve_color(rctx->blitter, info->dst.resource, info->dst.level, diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c index 6bc89ab76d1..892ee84a75e 100644 --- a/src/gallium/drivers/radeonsi/si_blit.c +++ b/src/gallium/drivers/radeonsi/si_blit.c @@ -689,8 +689,10 @@ static bool do_hardware_msaa_resolve(struct pipe_context *ctx, info->src.box.height == dst_height && info->src.box.depth == 1 && dst->surface.level[info->dst.level].mode >= RADEON_SURF_MODE_1D && - !(dst->surface.flags & RADEON_SURF_SCANOUT)) { + !(dst->surface.flags & RADEON_SURF_SCANOUT) && + (!dst->cmask.size || !dst->dirty_level_mask) /* dst cannot be fast-cleared */) { si_blitter_begin(ctx, SI_COLOR_RESOLVE); +t-cleared util_blitter_custom_resolve_color(sctx->blitter, info->dst.resource, info->dst.level, info->dst.box.z,