Module: Mesa
Branch: master
Commit: d2261918202697febed0de18f66416e273001088
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2261918202697febed0de18f66416e273001088

Author: Marek Olšák <[email protected]>
Date:   Mon Jun  2 13:51:29 2014 +0200

r600g,radeonsi: don't use hardware MSAA resolve if dst is fast-cleared

It doesn't work and our docs say so too.

Cc: [email protected]
Reviewed-by: Michel Dänzer <[email protected]>

---

 src/gallium/drivers/r600/r600_blit.c   |    3 ++-
 src/gallium/drivers/radeonsi/si_blit.c |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_blit.c 
b/src/gallium/drivers/r600/r600_blit.c
index a2e7fa3..3269c47 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -788,7 +788,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 |
                                   (info->render_condition_enable ? 0 : 
R600_DISABLE_RENDER_COND));
                util_blitter_custom_resolve_color(rctx->blitter,
diff --git a/src/gallium/drivers/radeonsi/si_blit.c 
b/src/gallium/drivers/radeonsi/si_blit.c
index 0a4a660..e02615f 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -688,7 +688,8 @@ 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 |
                                 (info->render_condition_enable ? 0 : 
SI_DISABLE_RENDER_COND));
                util_blitter_custom_resolve_color(sctx->blitter,

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to