Hi everyone, this patch series implements all the core Mesa and Gallium support for EXT_transform_feedback and ARB_transform_feedback2. It's been tested by me on Radeons and by Christoph Bumiller on Nouveau. I have verified that all transform feedback piglit tests (except the one that requires GLSL 1.3) pass with this code.
Since we were discussing this last time, the Gallium interface has been slightly modified to make it easier to implement by drivers. The Gallium docs have been updated too. Some streamout-related softpipe and llvmpipe code for the old interface has been disabled. I didn't look at what needs to be done to support the new one. Please review. Marek Olšák (8): mesa: implement DrawTransformFeedback from ARB_transform_feedback2 gallium: disable stream output in drivers that support it gallium: interface changes necessary to implement transform feedback (v4) gallium: utility helper functions for stream output noop: implement stream output u_blitter: restore stream output targets u_blitter: implement copy_buffer using stream output st/mesa: implement EXT_transform_feedback and ARB_transform_feedback2 src/gallium/auxiliary/cso_cache/cso_context.c | 101 +++++++++++++++++ src/gallium/auxiliary/cso_cache/cso_context.h | 8 ++ src/gallium/auxiliary/draw/draw_context.c | 4 +- src/gallium/auxiliary/draw/draw_context.h | 2 +- src/gallium/auxiliary/draw/draw_private.h | 2 +- src/gallium/auxiliary/draw/draw_pt_so_emit.c | 2 +- src/gallium/auxiliary/tgsi/tgsi_ureg.c | 7 +- src/gallium/auxiliary/tgsi/tgsi_ureg.h | 18 +++- src/gallium/auxiliary/util/u_blit.c | 6 + src/gallium/auxiliary/util/u_blitter.c | 105 +++++++++++++++++- src/gallium/auxiliary/util/u_blitter.h | 29 +++++ src/gallium/auxiliary/util/u_debug_describe.c | 10 ++ src/gallium/auxiliary/util/u_debug_describe.h | 2 + src/gallium/auxiliary/util/u_gen_mipmap.c | 3 + src/gallium/auxiliary/util/u_inlines.h | 12 ++ src/gallium/auxiliary/util/u_simple_shaders.c | 14 ++- src/gallium/auxiliary/util/u_simple_shaders.h | 8 ++ src/gallium/docs/source/context.rst | 61 +++++++---- src/gallium/docs/source/screen.rst | 3 + src/gallium/drivers/llvmpipe/lp_state.h | 2 +- src/gallium/drivers/llvmpipe/lp_state_so.c | 9 ++- src/gallium/drivers/noop/noop_state.c | 35 ++++++ src/gallium/drivers/nv50/nv50_screen.c | 2 +- src/gallium/drivers/nvc0/nvc0_screen.c | 2 +- src/gallium/drivers/nvc0/nvc0_state.c | 9 ++- src/gallium/drivers/r300/r300_screen.c | 2 +- src/gallium/drivers/r600/r600_pipe.c | 2 +- src/gallium/drivers/softpipe/sp_context.c | 2 +- src/gallium/drivers/softpipe/sp_screen.c | 4 +- src/gallium/drivers/softpipe/sp_state.h | 2 +- src/gallium/drivers/softpipe/sp_state_so.c | 9 ++- src/gallium/include/pipe/p_context.h | 38 ++++--- src/gallium/include/pipe/p_defines.h | 8 +- src/gallium/include/pipe/p_state.h | 83 +++++++++++--- src/mesa/drivers/dri/i965/brw_draw.c | 3 +- src/mesa/drivers/dri/i965/brw_draw.h | 3 +- src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c | 15 ++- src/mesa/main/api_validate.c | 34 ++++++ src/mesa/main/api_validate.h | 10 ++ src/mesa/main/dd.h | 3 +- src/mesa/main/mtypes.h | 2 + src/mesa/main/transformfeedback.c | 65 ++---------- src/mesa/main/transformfeedback.h | 6 +- src/mesa/main/varray.h | 7 + src/mesa/main/vtxfmt.c | 1 + src/mesa/state_tracker/st_atom_rasterizer.c | 7 +- src/mesa/state_tracker/st_cb_bitmap.c | 3 + src/mesa/state_tracker/st_cb_clear.c | 3 + src/mesa/state_tracker/st_cb_drawpixels.c | 3 + src/mesa/state_tracker/st_cb_drawtex.c | 3 + src/mesa/state_tracker/st_cb_rasterpos.c | 3 +- src/mesa/state_tracker/st_cb_xformfb.c | 149 ++++++++++++++++++------- src/mesa/state_tracker/st_cb_xformfb.h | 12 ++ src/mesa/state_tracker/st_draw.c | 14 ++- src/mesa/state_tracker/st_draw.h | 6 +- src/mesa/state_tracker/st_draw_feedback.c | 3 +- src/mesa/state_tracker/st_extensions.c | 16 +++ src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 25 ++++ src/mesa/state_tracker/st_glsl_to_tgsi.h | 6 + src/mesa/state_tracker/st_program.c | 12 ++ src/mesa/tnl/t_draw.c | 3 +- src/mesa/tnl/tnl.h | 3 +- src/mesa/vbo/vbo.h | 4 +- src/mesa/vbo/vbo_exec_array.c | 93 +++++++++++++++- src/mesa/vbo/vbo_exec_draw.c | 3 +- src/mesa/vbo/vbo_rebase.c | 3 +- src/mesa/vbo/vbo_save_api.c | 11 ++ src/mesa/vbo/vbo_save_draw.c | 3 +- src/mesa/vbo/vbo_split_copy.c | 3 +- src/mesa/vbo/vbo_split_inplace.c | 3 +- 70 files changed, 934 insertions(+), 215 deletions(-) -- 1.7.5.4 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
