From a6710090af7bfda005388d9ee8f108b3aeb15e57 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 4 Sep 2015 19:02:28 +0100 Subject: i965: Disallow PixelTransfer operations for tiled-memcpy TexImage/ReadPixels The tiled memcpy fast paths perform a simple blit (with only a couple of trivial pixel conversion routines) and do not accommodate PixelTransfer operations. Therefore if any are set, fallback to the regular routines. Note that PixelTransfer only applies to TexImage and ReadPixels, not to GetTexImage. Signed-off-by: Chris Wilson Cc: Jason Ekstrand Cc: Kenneth Graunke Reviewed-by: Jason Ekstrand Reviewed-by: Kenneth Graunke Cc: mesa-stable@lists.freedesktop.org (cherry picked from commit 099f5b3a62be1919add02a4cb887841c9f0f2fe4) --- src/mesa/drivers/dri/i965/intel_pixel_read.c | 4 ++++ src/mesa/drivers/dri/i965/intel_tex_subimage.c | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'src') diff --git a/src/mesa/drivers/dri/i965/intel_pixel_read.c b/src/mesa/drivers/dri/i965/intel_pixel_read.c index 3fe506e3cf1..eb366cd3e34 100644 --- a/src/mesa/drivers/dri/i965/intel_pixel_read.c +++ b/src/mesa/drivers/dri/i965/intel_pixel_read.c @@ -109,6 +109,10 @@ intel_readpixels_tiled_memcpy(struct gl_context * ctx, pack->Invert) return false; + /* Only a simple blit, no scale, bias or other mapping. */ + if (ctx->_ImageTransferState) + return false; + /* This renderbuffer can come from a texture. In this case, we impose * some of the same restrictions we have for textures and adjust for * miplevels. diff --git a/src/mesa/drivers/dri/i965/intel_tex_subimage.c b/src/mesa/drivers/dri/i965/intel_tex_subimage.c index 31e511f0b7b..44921e5242c 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/i965/intel_tex_subimage.c @@ -118,6 +118,10 @@ intel_texsubimage_tiled_memcpy(struct gl_context * ctx, packing->Invert) return false; + /* Only a simple blit, no scale, bias or other mapping. */ + if (ctx->_ImageTransferState) + return false; + if (!intel_get_memcpy(texImage->TexFormat, format, type, &mem_copy, &cpp, INTEL_UPLOAD)) return false; -- cgit v1.2.3