On Tue, Sep 08, 2015 at 12:33:05PM -0700, Anuj Phogat wrote:
> On Sun, Sep 6, 2015 at 9:37 AM, Chris Wilson <ch...@chris-wilson.co.uk> 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 <ch...@chris-wilson.co.uk>
> > Cc: Jason Ekstrand <jason.ekstr...@intel.com>
> > Cc: Kenneth Graunke <kenn...@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;
> > +
> I think we need a similar condition in 
> copytexsubimage_using_blit_framebuffer()
> called from _mesa_meta_CopyTexSubImage().

Actually,  ImageTransferState doesn't encompass all the PixelTransfer
operations, so a few more checks are required along all the blit paths,
namely ctl->Pixel.Zoom[XY] != 1.f

Those latter we don't need along the meta path as Kenneth pointed out,
both meta (though the blit path will need to check for integer
coordinates after the transform) and blorp can handle zoom.

More work required. :|
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to