[Mesa-dev] [PATCH v2 4/4] i965: Implemente a tiled fast-path for glReadPixels and glGetTexImage
Jason Ekstrand
jason at jlekstrand.net
Mon Jan 5 15:49:10 PST 2015
On Mon, Jan 5, 2015 at 3:47 PM, Matt Turner <mattst88 at gmail.com> wrote:
> On Mon, Jan 5, 2015 at 3:27 PM, Jason Ekstrand <jason at jlekstrand.net>
> wrote:
> > From: Sisinty Sasmita Patra <sisinty.patra at intel.com>
> >
> > Added intel_readpixels_tiled_mempcpy and
> intel_gettexsubimage_tiled_mempcpy
> > functions. These are the fast paths for glReadPixels and glGetTexImage.
> >
> > On chrome, using the RoboHornet 2D Canvas toDataURL test, this patch cuts
> > amount of time spent in glReadPixels by more than half and reduces the
> time
> > of the entire test by 10%.
> >
> > v2: Jason Ekstrand <jason.ekstrand at intel.com>
> > - Refactor to make the functions look more like the old
> > intel_tex_subimage_tiled_memcpy
> > - Don't export the readpixels_tiled_memcpy function
> > - Fix some pointer arithmatic bugs in partial image downloads (using
> > ReadPixels with a non-zero x or y offset)
> > - Fix a bug when ReadPixels is performed on an FBO wrapping a texture
> > miplevel other than zero.
> >
> > v3: Jason Ekstrand <jason.ekstrand at intel.com>
> > - Better documentation fot the *_tiled_memcpy functions
> > - Add target restrictions for renderbuffers wrapping textures
> > ---
> > src/mesa/drivers/dri/i965/intel_pixel_read.c | 142
> ++++++++++++++++++++++++++-
> > src/mesa/drivers/dri/i965/intel_tex.h | 9 ++
> > src/mesa/drivers/dri/i965/intel_tex_image.c | 139
> +++++++++++++++++++++++++-
> > 3 files changed, 287 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/intel_pixel_read.c
> b/src/mesa/drivers/dri/i965/intel_pixel_read.c
> > index beb3152..5aa06c2 100644
> > --- a/src/mesa/drivers/dri/i965/intel_pixel_read.c
> > +++ b/src/mesa/drivers/dri/i965/intel_pixel_read.c
> > @@ -38,14 +38,16 @@
> >
> > #include "brw_context.h"
> > #include "intel_screen.h"
> > +#include "intel_batchbuffer.h"
> > #include "intel_blit.h"
> > #include "intel_buffers.h"
> > #include "intel_fbo.h"
> > #include "intel_mipmap_tree.h"
> > #include "intel_pixel.h"
> > #include "intel_buffer_objects.h"
> > +#include "intel_tiled_memcpy.h"
> >
> > -#define FILE_DEBUG_FLAG DEBUG_PIXEL
> > +#define FILE_DEBUG_FLAG DEBUG_TEXTURE
> >
> > /* For many applications, the new ability to pull the source buffers
> > * back out of the GTT and then do the packing/conversion operations
> > @@ -161,17 +163,155 @@ do_blit_readpixels(struct gl_context * ctx,
> > return true;
> > }
> >
> > +/**
> > + * \brief A fast path for glReadPixels
> > + *
> > + * This fast path is taken when the source format is BGRA, RGBA,
> > + * A or L and when the texture memory is X- or Y-tiled. It downloads
> > + * the source data by directly mapping the memory without a GTT fence.
> > + * This then needs to be de-tiled on the CPU before presenting the data
> to
> > + * the user in the linear fasion.
> > + *
> > + * This is a performance win over the conventional texture download
> path.
> > + * In the conventional texture download path, the texture is either
> mapped
> > + * through the GTT or copied to a linear buffer with the blitter before
> > + * handing off to a software path. This allows us to avoid
> round-tripping
> > + * throug the GPU (in the case where we would be blitting) and do only a
>
> typo: through. (occurs in the comment later as well)
>
Fixed locally.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150105/ea6396c5/attachment.html>
More information about the mesa-dev
mailing list