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(-) _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev