[Mesa-dev] [PATCH v3 00/10] i965: Use the render pipeline for PBO uploads and
Neil Roberts
neil at linux.intel.com
Thu Jan 22 07:07:44 PST 2015
This series looks really good to me. I can confirm it gives a 241%
transfer rate increase in that little pboUnpack test on BayTrail.
Assuming the minor comments I made are fixed and the v2 patch for the
pthread_once thingy is used then the series is:
Reviewed-by: Neil Roberts <neil at linux.intel.com>
Regards,
- Neil
Jason Ekstrand <jason at jlekstrand.net> writes:
> This series adds support for doing texture up/downloads using the render
> pipeline instead of the blitter. There are a number of good reasons for
> doing so.
>
> 1) The blitter is commonly thought to be slower than the render pipeline
> in terms of its access to memory.
>
> 2) The blitter is on a different ringbuffer so using it incurs incurs a
> ring-switching penalty.
>
> 3) The blitter is incapable of doing format conversion while we get it
> almost for free with the render pipeline.
>
> This last point is probably the most important one. In some
> micro-benchmarks I did, the render pipeline is somewhere between 5 and 40x
> as fast as the CPU for doing format conversion operations. It's even
> faster than CPU-tiling memcpy path when the texture is reasonably large
> (1024 square is big enough) and already in a PBO. Since the meta paths are
> strictly better than the blitter paths, the old blitter paths are removed.
>
> As a side-effect of these patches, the meta PBO path is tried before the
> tiled_memcpy path when the source is already a PBO. Previously, we weren't
> doing this and anything that hit the tiled_memcpy path on an in-use texture
> would cause a pipeline stall.
>
> Jason Ekstrand (10):
> mesa/dd: Add a function for creating a texture from a buffer object
> i965/mipmap_tree: Add a depth parameter to create_for_bo
> i965: Apply the miptree offset to surface state for renderbuffers
> i965: Implement SetTextureStorageForBufferObject
> formats: Use a hash table for _mesa_format_from_array_format
> meta: Add a BlitFramebuffers-based implementation of TexSubImage
> meta: Add an implementation of GetTexSubImage for PBOs
> i965/pixel_read: Use meta_pbo_GetTexSubImage for PBO ReadPixels
> i965/tex_image: Use meta for instead of the blitter PBO TexImage and
> GetTexImage
> i965/tex_subimage: use meta instead of the blitter for PBO TexSubImage
>
> src/mesa/Makefile.sources | 1 +
> src/mesa/drivers/common/meta.h | 17 ++
> src/mesa/drivers/common/meta_tex_subimage.c | 355 ++++++++++++++++++++++
> src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 3 +-
> src/mesa/drivers/dri/i965/gen6_surface_state.c | 3 +-
> src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 3 +-
> src/mesa/drivers/dri/i965/gen8_surface_state.c | 3 +-
> src/mesa/drivers/dri/i965/intel_fbo.c | 1 +
> src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 9 +-
> src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 1 +
> src/mesa/drivers/dri/i965/intel_pixel_draw.c | 2 +-
> src/mesa/drivers/dri/i965/intel_pixel_read.c | 130 +-------
> src/mesa/drivers/dri/i965/intel_tex.c | 57 ++++
> src/mesa/drivers/dri/i965/intel_tex_image.c | 205 ++-----------
> src/mesa/drivers/dri/i965/intel_tex_subimage.c | 115 +------
> src/mesa/main/dd.h | 15 +
> src/mesa/main/formats.c | 67 +++-
> 17 files changed, 561 insertions(+), 426 deletions(-)
> create mode 100644 src/mesa/drivers/common/meta_tex_subimage.c
>
> --
> 2.2.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list