summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/r600_blit.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2013-08-10 18:51:12 +0200
committerMarek Olšák <[email protected]>2013-08-17 01:48:25 +0200
commit8c04f253604dd38f43f2a3b0bf422538da8dcfa0 (patch)
treefc29f5ed6d2046e0c6d67e3bc6eb54dc985261c4 /src/gallium/drivers/radeonsi/r600_blit.c
parent2a4b2e23053db846903199ed1a892fe72da70750 (diff)
radeonsi: scanout buffers cannot be a destination of MSAA resolve
Resolving to scanout buffers just doesn't work. Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/r600_blit.c')
-rw-r--r--src/gallium/drivers/radeonsi/r600_blit.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/r600_blit.c b/src/gallium/drivers/radeonsi/r600_blit.c
index 7ac92d4ac14..edfa730ef46 100644
--- a/src/gallium/drivers/radeonsi/r600_blit.c
+++ b/src/gallium/drivers/radeonsi/r600_blit.c
@@ -471,6 +471,7 @@ static boolean is_simple_msaa_resolve(const struct pipe_blit_info *info)
unsigned dst_height = u_minify(info->dst.resource->height0, info->dst.level);
struct r600_texture *dst = (struct r600_texture*)info->dst.resource;
unsigned dst_tile_mode = dst->surface.level[info->dst.level].mode;
+ bool dst_is_scanout = (dst->surface.flags & RADEON_SURF_SCANOUT) != 0;
return info->dst.resource->format == info->src.resource->format &&
info->dst.resource->format == info->dst.format &&
@@ -489,7 +490,8 @@ static boolean is_simple_msaa_resolve(const struct pipe_blit_info *info)
info->src.box.height == dst_height &&
/* Dst must be tiled. If it's not, we have to use a temporary
* resource which is tiled. */
- dst_tile_mode >= RADEON_SURF_MODE_1D;
+ dst_tile_mode >= RADEON_SURF_MODE_1D &&
+ !dst_is_scanout;
}
/* For MSAA integer resolving to work, we change the format to NORM using this function. */