[Mesa-dev] [PATCH] i965: Disallow fast blit paths for CopyTexImage with PixelTransfer ops

Iago Toral itoral at igalia.com
Mon Sep 7 06:47:17 PDT 2015


Looks correct, based on the previous discussion about the same fix for
ReadPixels and TexImage. CopyTexImage has the same requirements.

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>

On Sun, 2015-09-06 at 17:37 +0100, Chris Wilson wrote:
> glCopyTexImage behaves similarly to glReadPixels with respect to the
> pixel transfer operations. Therefore if any are set we cannot use the
> simply blit fast paths.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Jason Ekstrand <jason.ekstrand at intel.com>
> Cc: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 4 ++++
>  src/mesa/drivers/dri/i965/intel_tex_copy.c   | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> index 205c905..ba11d3d 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> @@ -215,6 +215,10 @@ brw_blorp_copytexsubimage(struct brw_context *brw,
>     struct intel_renderbuffer *src_irb = intel_renderbuffer(src_rb);
>     struct intel_texture_image *intel_image = intel_texture_image(dst_image);
>  
> +   /* No pixel transfer operations (zoom, bias, mapping), just a blit */
> +   if (brw->ctx._ImageTransferState)
> +      return false;
> +
>     /* Sync up the state of window system buffers.  We need to do this before
>      * we go looking at the src renderbuffer's miptree.
>      */
> diff --git a/src/mesa/drivers/dri/i965/intel_tex_copy.c b/src/mesa/drivers/dri/i965/intel_tex_copy.c
> index 4d8c82e..ecdd052 100644
> --- a/src/mesa/drivers/dri/i965/intel_tex_copy.c
> +++ b/src/mesa/drivers/dri/i965/intel_tex_copy.c
> @@ -55,6 +55,10 @@ intel_copy_texsubimage(struct brw_context *brw,
>     const GLenum internalFormat = intelImage->base.Base.InternalFormat;
>     bool ret;
>  
> +   /* No pixel transfer operations (zoom, bias, mapping), just a blit */
> +   if (brw->ctx._ImageTransferState)
> +      return false;
> +
>     intel_prepare_render(brw);
>  
>     /* glCopyTexSubImage() can be called on a multisampled renderbuffer (if




More information about the mesa-dev mailing list