[Mesa-dev] [PATCH 0/4] Actual ARB_multi_draw_indirect support

Ian Romanick idr at freedesktop.org
Mon Jan 4 19:07:33 PST 2016


On 12/31/2015 11:55 AM, Ilia Mirkin wrote:
> The current support in mesa for ARB_multi_draw_indirect is pretty
> shameful... it just does N separate draws. Instead make it possible
> for drivers to handle this in a more efficient manner. Also create the
> backend interfaces necessary to support ARB_indirect_parameters,
> although the (trivial) frontend bits are not part of this series.
> 
> Of course right now st/mesa will still break up the multidraw into N
> draws since no backends actually support this. And there are no
> piglits (other than one in images) which actually make use of
> glMultiDraw*Indirect... oh well.

Are there any known applications that use this feature?

> The nvc0 support is going to be a tad tricky for this since I can't
> feed an arbitrarily-sized buffer into the command stream (something
> like 2K max items per command). So I need to split it up. And I need
> to beef up the macro we use for it. That's all a task for next year
> though.
> 
> Ilia Mirkin (4):
>   vbo: create a new draw function interface for indirect draws
>   gallium: add sufficient draw interface to allow new indirect features
>   gallium: add caps to expose support for multi indirect draws
>   st/mesa: add support for new mesa indirect draw interface
> 
>  src/gallium/docs/source/screen.rst               |   5 +
>  src/gallium/drivers/freedreno/freedreno_screen.c |   2 +
>  src/gallium/drivers/i915/i915_screen.c           |   2 +
>  src/gallium/drivers/ilo/ilo_screen.c             |   2 +
>  src/gallium/drivers/llvmpipe/lp_screen.c         |   2 +
>  src/gallium/drivers/nouveau/nv30/nv30_screen.c   |   2 +
>  src/gallium/drivers/nouveau/nv50/nv50_screen.c   |   2 +
>  src/gallium/drivers/nouveau/nvc0/nvc0_screen.c   |   2 +
>  src/gallium/drivers/r300/r300_screen.c           |   2 +
>  src/gallium/drivers/r600/r600_pipe.c             |   2 +
>  src/gallium/drivers/radeonsi/si_pipe.c           |   2 +
>  src/gallium/drivers/softpipe/sp_screen.c         |   2 +
>  src/gallium/drivers/svga/svga_screen.c           |   2 +
>  src/gallium/drivers/vc4/vc4_screen.c             |   2 +
>  src/gallium/drivers/virgl/virgl_screen.c         |   2 +
>  src/gallium/include/pipe/p_defines.h             |   2 +
>  src/gallium/include/pipe/p_state.h               |  11 +-
>  src/mesa/state_tracker/st_context.c              |   2 +
>  src/mesa/state_tracker/st_context.h              |   1 +
>  src/mesa/state_tracker/st_draw.c                 | 100 ++++++++++++--
>  src/mesa/vbo/vbo.h                               |  15 ++
>  src/mesa/vbo/vbo_context.c                       |   7 +
>  src/mesa/vbo/vbo_context.h                       |   6 +
>  src/mesa/vbo/vbo_exec_array.c                    | 166 ++++++++++++++---------
>  24 files changed, 266 insertions(+), 77 deletions(-)



More information about the mesa-dev mailing list