Hi; Patches implement the extension, no Piglit regressions and all the tests for the extension pass (I've planned some more tests which are not yet in though).
Changes shortly: - opt_dead_code optimization is modifed to build a list of removed uniform locations (that had explicit location) as this information is required by the extension. For this I had to modify here and there to have gl_shader_program structure available. - link_uniforms is modified to first occupy all explicit locations and only then the rest (sorry about patch size but I'm having trouble to split it smaller) - small parser changes, likely needs still more validation checks I would need some help determining what kind of version checks (gl, glsl) should be made in the parser for this extension and also should I rather just enable it for everyone or only for Intel, would be cool if someone could test this implementation against some other platform. Also, I'm not sure how to actually get a good MAX_UNIFORM_LOCATIONS value, current one is just thrown with a dice. For example this is 65536 for Nvidia binary driver (with gtx660) but it feels rather big to *really* work .. or? Here's a branch with the patches: http://cgit.freedesktop.org/~tpalli/mesa/log/?h=exp_uniform_loc Any comments appreciated, thanks; // Tapani Tapani Pälli (13): glapi: add GL_ARB_explicit_uniform_location mesa: add enable bit for ARB_explicit_uniform_location mesa: add new enum MAX_UNIFORM_LOCATIONS and default value mesa: add a storage for inactive/removed uniform variables glsl: change do_common_optimization signature glsl: change do_dead_code signature, store uniform locations glsl/linker: change link_assign_uniform_locations signature glsl/linker: GL_ARB_explicit_uniform_location support mesa: support inactive uniforms in glUniform* functions glsl: add enable bit for ARB_explicit_uniform_location glsl: parser changes for GL_ARB_explicit_uniform_location intel: Enable GL_ARB_explicit_uniform_location docs: update ARB_explicit_uniform_location status docs/GL3.txt | 2 +- src/glsl/ast_to_hir.cpp | 13 ++ src/glsl/glcpp/glcpp-parse.y | 3 + src/glsl/glsl_lexer.ll | 1 + src/glsl/glsl_parser_extras.cpp | 11 +- src/glsl/glsl_parser_extras.h | 2 + src/glsl/ir_optimization.h | 6 +- src/glsl/ir_uniform.h | 5 +- src/glsl/link_uniforms.cpp | 239 ++++++++++++++++++++++++--- src/glsl/linker.cpp | 12 +- src/glsl/linker.h | 5 +- src/glsl/opt_dead_code.cpp | 40 ++++- src/mapi/glapi/gen/gl_API.xml | 6 + src/mesa/drivers/dri/i965/brw_shader.cpp | 3 +- src/mesa/drivers/dri/i965/intel_extensions.c | 1 + src/mesa/main/context.c | 3 + src/mesa/main/extensions.c | 1 + src/mesa/main/get.c | 1 + src/mesa/main/get_hash_params.py | 1 + src/mesa/main/mtypes.h | 19 +++ src/mesa/main/shaderobj.c | 7 + src/mesa/main/tests/enum_strings.cpp | 1 + src/mesa/main/uniform_query.cpp | 16 ++ src/mesa/program/ir_to_mesa.cpp | 2 +- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 3 +- 25 files changed, 367 insertions(+), 36 deletions(-) -- 1.8.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev