summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2018-01-31 17:31:39 -0800
committerEmil Velikov <emil.l.velikov@gmail.com>2018-02-09 04:22:54 +0000
commitcaad5571fb390115d0666f18c7fa1c3bf55f0789 (patch)
tree6f180b5bb141b6f0e32dcfe5c679b9e70f3403bc
parent0d3a990c7fdc84e3f91264c62d568df9982b8502 (diff)
i965: Call prepare_external after implicit window-system MSAA resolves
This fixes some rendering corruption in a couple of Android apps that use window-system MSAA. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104741 Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Tapani Pälli <tapani.palli@intel.com> (cherry picked from commit 2f7205be47bbb730cdfa0a037224b9ebd5224fd1)
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 7fbf61410fd..4b2bdca463b 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -1261,6 +1261,21 @@ intel_resolve_for_dri2_flush(struct brw_context *brw,
intel_miptree_prepare_external(brw, rb->mt);
} else {
intel_renderbuffer_downsample(brw, rb);
+
+ /* Call prepare_external on the single-sample miptree to do any
+ * needed resolves prior to handing it off to the window system.
+ * This is needed in the case that rb->singlesample_mt is Y-tiled
+ * with CCS_E enabled but without I915_FORMAT_MOD_Y_TILED_CCS_E. In
+ * this case, the MSAA resolve above will write compressed data into
+ * rb->singlesample_mt.
+ *
+ * TODO: Some day, if we decide to care about the tiny performance
+ * hit we're taking by doing the MSAA resolve and then a CCS resolve,
+ * we could detect this case and just allocate the single-sampled
+ * miptree without aux. However, that would be a lot of plumbing and
+ * this is a rather exotic case so it's not really worth it.
+ */
+ intel_miptree_prepare_external(brw, rb->singlesample_mt);
}
}
}