summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/intel_blit.c
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2014-02-21 19:15:51 -0800
committerKenneth Graunke <kenneth@whitecape.org>2014-02-23 20:19:00 -0800
commit73c78c514f8db0605c0deb85382003d0f66b5525 (patch)
tree322ac97f0ee1d48452bee9bd2b97c655ea240ccb /src/mesa/drivers/dri/i965/intel_blit.c
parent3f7239ca0ef279be3e1618770a1c2b9112236234 (diff)
downloadexternal_mesa3d-73c78c514f8db0605c0deb85382003d0f66b5525.zip
external_mesa3d-73c78c514f8db0605c0deb85382003d0f66b5525.tar.gz
external_mesa3d-73c78c514f8db0605c0deb85382003d0f66b5525.tar.bz2
i965: Don't try to use the hardware blitter for multisampled miptrees.
The blitter is completely ignorant of MSAA buffer layouts, so any attempt to use BLT paths with MSAA buffers is likely to break spectacularly. In most cases, BLORP handles MSAA blits, so we never hit this bug. Until recently, it also wasn't worth fixing, since Meta couldn't handle MSAA either, so there was nothing to fall back to. But now there is. +143 piglit tests on Broadwell (which doesn't have BLORP support). Surprisingly, three also start failing. Since non-IMS MSAA buffers store samples in successive array slices, using the blitter ought to access sample 0 and ignore the rest, which is apparently good enough for a few not-very-picky Piglit tests. Presumably the meta replacement code is still broken. No Piglit changes on Ivybridge. v2: Move the early return to the top of the function (suggested by Paul). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_blit.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_blit.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c
index df85dc9..d1c16d5 100644
--- a/src/mesa/drivers/dri/i965/intel_blit.c
+++ b/src/mesa/drivers/dri/i965/intel_blit.c
@@ -158,6 +158,10 @@ intel_miptree_blit(struct brw_context *brw,
uint32_t width, uint32_t height,
GLenum logicop)
{
+ /* The blitter doesn't understand multisampling at all. */
+ if (src_mt->num_samples > 0 || dst_mt->num_samples > 0)
+ return false;
+
/* No sRGB decode or encode is done by the hardware blitter, which is
* consistent with what we want in the callers (glCopyTexSubImage(),
* glBlitFramebuffer(), texture validation, etc.).