[Mesa-dev] [PATCH 00/12] RFC: add support of ARB_separate_shader_object extensions V2
gregory
gregory.hainaut at gmail.com
Fri Apr 12 09:22:02 PDT 2013
V2:
* fix ralloc memory leak
* follow mesa formating rule
* rename Pipeline.PipelineObj to Pipeline.Current
* rename gl_shader_state to gl_pipeline_object
* rebase on current mesa
Please find an implementation of the ARB_separate_shader_objects extensions. I concentrate mostly on the state part of
the extensions aka the pipeline object. I think GLSL already compiled program separately anyway.
I test my implementation on the test that I send few day ago on piglit. All tests are ok but I miss a test for new uniform function.
Besides there are still some parts unimplemented:
1/ GLX Protocol: dropped
2/ Display list: would be done later if someone is interested otherwise dropped
Stuff that bug me:
1/ I implement the feature as a pure mesa state. I don't know if they're any rule to create driver functions. Maybe it
would be better to add CreatePipelineObject/DeletePipelineObject/BindPipeline/UseProgramStages. Opinion is welcome
Note: Rebase done on ac1118d53c0b22db8dcd6fcdcd2d1a245037dbc1
Note2: I create the xml manually, don't know if there is any automatic flow.
gregory (12):
sso: Create extensions entry points
sso: Add pipeline container/state
sso: add support of GL_PROGRAM_SEPARABLE and CreateShaderProgramv
sso: implement ActiveShaderProgram & GetProgramPipelineiv
sso: replace Shader binding point with _Shader
sso: rename Shader to the pointer _Shader
sso: update meta state
sso: Implement _mesa_UseProgramStages
sso: implement BindProgramPipeline
sso: update glGet: GL_PROGRAM_PIPELINE_BINDING
sso: implement ValidateProgramPipeline and GetProgramPipelineInfoLog
sso: Finally enable the extension on Gallium
src/mapi/glapi/gen/ARB_separate_shader_objects.xml | 392 ++++++++++
src/mapi/glapi/gen/Makefile.am | 1 +
src/mapi/glapi/gen/gl_API.xml | 6 +-
src/mapi/glapi/gen/gl_genexec.py | 1 +
src/mesa/drivers/common/meta.c | 38 +-
src/mesa/drivers/dri/i965/brw_gs.c | 2 +-
src/mesa/drivers/dri/i965/brw_shader.cpp | 4 +-
src/mesa/drivers/dri/i965/brw_vs.c | 4 +-
src/mesa/drivers/dri/i965/brw_vs_surface_state.c | 2 +-
src/mesa/drivers/dri/i965/brw_wm.c | 2 +-
src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 2 +-
src/mesa/drivers/dri/i965/gen6_sol.c | 6 +-
src/mesa/drivers/dri/i965/gen6_vs_state.c | 2 +-
src/mesa/drivers/dri/i965/gen6_wm_state.c | 2 +-
src/mesa/drivers/dri/i965/gen7_sol_state.c | 4 +-
src/mesa/drivers/dri/i965/gen7_vs_state.c | 2 +-
src/mesa/drivers/dri/i965/gen7_wm_state.c | 2 +-
src/mesa/main/api_validate.c | 2 +-
src/mesa/main/context.c | 44 +-
src/mesa/main/extensions.c | 1 +
src/mesa/main/ff_fragment_shader.cpp | 8 +-
src/mesa/main/get.c | 19 +
src/mesa/main/get_hash_params.py | 3 +
src/mesa/main/mtypes.h | 43 +-
src/mesa/main/pipelineobj.c | 827 ++++++++++++++++++++
src/mesa/main/pipelineobj.h | 101 +++
src/mesa/main/shaderapi.c | 252 ++++--
src/mesa/main/shaderapi.h | 10 +-
src/mesa/main/state.c | 14 +-
src/mesa/main/texstate.c | 12 +-
src/mesa/main/transformfeedback.c | 4 +-
src/mesa/main/uniform_query.cpp | 75 +-
src/mesa/main/uniforms.c | 466 ++++++++++-
src/mesa/main/uniforms.h | 86 ++
src/mesa/program/ir_to_mesa.cpp | 12 +-
src/mesa/sources.mak | 1 +
src/mesa/state_tracker/st_atom_clip.c | 2 +-
src/mesa/state_tracker/st_atom_constbuf.c | 4 +-
src/mesa/state_tracker/st_cb_drawpixels.c | 2 +-
src/mesa/state_tracker/st_draw.c | 6 +-
src/mesa/state_tracker/st_extensions.c | 1 +
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 +-
src/mesa/state_tracker/st_program.c | 6 +-
src/mesa/swrast/s_fragprog.c | 2 +-
44 files changed, 2302 insertions(+), 175 deletions(-)
create mode 100644 src/mapi/glapi/gen/ARB_separate_shader_objects.xml
create mode 100644 src/mesa/main/pipelineobj.c
create mode 100644 src/mesa/main/pipelineobj.h
--
1.7.10.4
More information about the mesa-dev
mailing list