On Tue, Jan 13, 2015 at 10:28 AM, Jason Ekstrand <ja...@jlekstrand.net> wrote:
> 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. Actually, it looks like 256x256 is about the tipping point on HSW for whatever it's worth. > 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@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev