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

Reply via email to