summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2014-09-17 14:34:06 +0200
committerMarek Olšák <[email protected]>2014-09-24 14:48:02 +0200
commit4ace4190ac0f4f873cf93189d3b934d36acd3329 (patch)
treeb0701a1c00b9ad40c80e654ebd1d08653ae241c6 /src
parent6cfedf8797f0ee3dd7c8cf9f28ee2c2b2d0eb2dc (diff)
r300g: implement MSAA copies by resolving and upsampling
There's no other way. It will use hw resolve + blit.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/r300/r300_blit.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c
index 2320abb9756..4e7efc560a4 100644
--- a/src/gallium/drivers/r300/r300_blit.c
+++ b/src/gallium/drivers/r300/r300_blit.c
@@ -679,7 +679,9 @@ static boolean r300_is_simple_msaa_resolve(const struct pipe_blit_info *info)
unsigned dst_width = u_minify(info->dst.resource->width0, info->dst.level);
unsigned dst_height = u_minify(info->dst.resource->height0, info->dst.level);
- return info->dst.resource->format == info->src.resource->format &&
+ return info->src.resource->nr_samples > 1 &&
+ info->dst.resource->nr_samples <= 1 &&
+ info->dst.resource->format == info->src.resource->format &&
info->dst.resource->format == info->dst.format &&
info->src.resource->format == info->src.format &&
!info->scissor_enable &&
@@ -803,7 +805,6 @@ static void r300_blit(struct pipe_context *pipe,
/* MSAA resolve. */
if (info.src.resource->nr_samples > 1 &&
- info.dst.resource->nr_samples <= 1 &&
!util_format_is_depth_or_stencil(info.src.resource->format)) {
r300_msaa_resolve(pipe, &info);
return;