[Mesa-dev] [PATCH 00/23] Gallium blit rework

Marek Olšák maraeo at gmail.com
Fri Sep 14 10:18:32 PDT 2012


And BTW, you can also get it from here:

git://people.freedesktop.org/~mareko/mesa blit

Marek

On Fri, Sep 14, 2012 at 7:09 PM, Marek Olšák <maraeo at gmail.com> wrote:
> This series reworks blitting and MSAA resolving in Gallium as discussed here:
> http://www.mail-archive.com/mesa-dev@lists.freedesktop.org/msg26592.html
>
> I'd like to clarify some more rules for the blit function:
> - Z/S blitting must always be supported regardless of shader stencil export and sampler support (like glBlitFramebuffer). r300_blit is an example of how stencil can be copied.
> - The render condition has no effect.
>
> I have tested r600g, r300g, softpipe, and llvmpipe.
>
> The fbo-blit-stretch test started failing on softpipe. After careful examination it looks like softpipe is culling one of the two triangles of the quad u_blitter is rendering. The other tested drivers don't have this issue. I assume it's a bug in softpipe that was just uncovered.
>
> I haven't implemented the blit in the nv50/nvc0 driver, because Christoph has already started working on his own implemention.
>
> On the st/mesa side, I couldn't change CopyTexSubImage to use the new blit, because the blit doesn't allow the alpha channel to be forced to 1. The only way to achieve that is to set blit.src.format to an RGBX format and we don't have enough RGBX formats to be able to do that.
>
> That's it. Please review.
>
> Marek Olšák (23):
>       draw: fix non-indexed draw calls if there's an index buffer
>       softpipe: fix set_framebuffer_state with uninitialized surfaces past nr_cbufs-1
>       gallium: add PIPE_CAP_TEXTURE_MULTISAMPLE
>       gallium: add blit into the interface
>       gallium/u_blitter: check PIPE_CAP_TEXTURE_MULTISAMPLE
>       gallium/u_blitter: facilitate co-existence with the Draw module
>       gallium/u_blitter: add ability to disable and restore the render condition
>       gallium/u_blitter: add gallium blit implementation
>       gallium/u_blitter: add helper for blitting via resource_copy_region
>       gallium: add helpers for dumping pipe_box and pipe_blit_info
>       gallium: implement blit in driver wrappers
>       i915g: implement blit
>       llvmpipe: implement blit
>       nv30: use util_format_is_supported
>       nv30: implement blit
>       r300g: implement blit
>       r600g: implement blit
>       radeonsi: implement blit
>       softpipe: implement blit
>       svga: implement blit
>       st/mesa: implement BlitFramebuffer using gallium blit
>       st/mesa: implement decompress_with_blit using gallium blit
>       gallium: remove resource_resolve
>
>  src/gallium/auxiliary/draw/draw_context.c          |    2 +-
>  src/gallium/auxiliary/draw/draw_private.h          |    1 +
>  src/gallium/auxiliary/draw/draw_pt.c               |   11 +-
>  src/gallium/auxiliary/util/u_blitter.c             |  632 +++++++++++++++-----
>  src/gallium/auxiliary/util/u_blitter.h             |   84 ++-
>  src/gallium/auxiliary/util/u_dump.h                |    6 +
>  src/gallium/auxiliary/util/u_dump_state.c          |   73 +++
>  src/gallium/auxiliary/util/u_surface.c             |   30 +-
>  src/gallium/auxiliary/util/u_surface.h             |   11 +-
>  src/gallium/docs/d3d11ddi.txt                      |    2 +-
>  src/gallium/docs/source/context.rst                |   23 +-
>  src/gallium/drivers/galahad/glhd_context.c         |   27 +-
>  src/gallium/drivers/i915/i915_context.c            |   11 +-
>  src/gallium/drivers/i915/i915_screen.c             |    1 +
>  src/gallium/drivers/i915/i915_surface.c            |   77 ++-
>  src/gallium/drivers/identity/id_context.c          |   15 +
>  src/gallium/drivers/llvmpipe/lp_context.c          |   12 +
>  src/gallium/drivers/llvmpipe/lp_context.h          |    3 +
>  src/gallium/drivers/llvmpipe/lp_screen.c           |    5 +
>  src/gallium/drivers/llvmpipe/lp_surface.c          |   61 ++
>  src/gallium/drivers/noop/noop_pipe.c               |    7 +
>  src/gallium/drivers/nv30/nv30_context.c            |    9 +
>  src/gallium/drivers/nv30/nv30_context.h            |    5 +
>  src/gallium/drivers/nv30/nv30_miptree.c            |   60 ++
>  src/gallium/drivers/nv30/nv30_query.c              |    3 +
>  src/gallium/drivers/nv30/nv30_resource.c           |    2 +-
>  src/gallium/drivers/nv30/nv30_resource.h           |    4 +
>  src/gallium/drivers/nv30/nv30_screen.c             |   14 +-
>  src/gallium/drivers/nv50/nv50_screen.c             |    1 +
>  src/gallium/drivers/nv50/nv50_surface.c            |    3 +-
>  src/gallium/drivers/nvc0/nvc0_screen.c             |    1 +
>  src/gallium/drivers/nvc0/nvc0_surface.c            |    3 +-
>  src/gallium/drivers/r300/r300_blit.c               |   48 +-
>  src/gallium/drivers/r300/r300_context.h            |    3 +-
>  src/gallium/drivers/r300/r300_render.c             |    7 +-
>  src/gallium/drivers/r300/r300_screen.c             |    1 +
>  src/gallium/drivers/r600/evergreen_state.c         |    2 +
>  src/gallium/drivers/r600/r600_blit.c               |  303 ++++------
>  src/gallium/drivers/r600/r600_pipe.c               |    1 +
>  src/gallium/drivers/r600/r600_pipe.h               |    8 +-
>  src/gallium/drivers/r600/r600_state.c              |    8 +-
>  src/gallium/drivers/r600/r600_state_common.c       |    4 +-
>  src/gallium/drivers/radeonsi/r600_blit.c           |   32 +-
>  src/gallium/drivers/softpipe/sp_context.c          |   11 +
>  src/gallium/drivers/softpipe/sp_context.h          |    3 +
>  src/gallium/drivers/softpipe/sp_screen.c           |    1 +
>  src/gallium/drivers/softpipe/sp_state_surface.c    |    8 +-
>  src/gallium/drivers/softpipe/sp_surface.c          |   55 ++
>  src/gallium/drivers/svga/svga_context.c            |    2 +
>  src/gallium/drivers/svga/svga_context.h            |    2 +
>  src/gallium/drivers/svga/svga_pipe_blit.c          |   64 ++
>  src/gallium/drivers/svga/svga_screen.c             |    1 +
>  src/gallium/drivers/svga/svga_swtnl_draw.c         |   10 +
>  src/gallium/drivers/trace/tr_context.c             |   23 +
>  src/gallium/drivers/trace/tr_dump_state.c          |   69 ++-
>  src/gallium/drivers/trace/tr_dump_state.h          |    2 +
>  src/gallium/include/pipe/p_context.h               |   12 +-
>  src/gallium/include/pipe/p_defines.h               |    3 +-
>  src/gallium/include/pipe/p_state.h                 |   31 +-
>  .../state_trackers/d3d1x/gd3d11/d3d11_context.h    |    2 +
>  src/mesa/main/image.c                              |    4 +-
>  src/mesa/state_tracker/st_cb_blit.c                |  326 +++++-----
>  src/mesa/state_tracker/st_cb_texture.c             |   70 +--
>  63 files changed, 1576 insertions(+), 739 deletions(-)
>
> Marek


More information about the mesa-dev mailing list