[Mesa-dev] [PATCH 0/8] EXT_transform_feedback & ARB_transform_feedback2 core support

Marek Olšák maraeo at gmail.com
Sat Nov 19 12:44:22 PST 2011


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



More information about the mesa-dev mailing list