From 4cdbf27fac2537fe1c5216afd5c10bde224eb57b Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 5 Sep 2012 14:15:30 -0700 Subject: [PATCH] mesa: Don't set uniform dispatch pointers for many things in ES2 or core NOTE: This is a candidate for the 9.0 branch Signed-off-by: Ian Romanick Reviewed-by: Eric Anholt (cherry picked from commit 6c01a0e770432eda0e29dbd7278a94efc688a6d3) --- src/mesa/main/api_exec.c | 2 +- src/mesa/main/uniforms.c | 70 +++++++++++++++++++++++++----------------------- src/mesa/main/uniforms.h | 3 ++- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 574f93e..30b1fb3 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -384,7 +384,7 @@ _mesa_create_exec_table(struct gl_context *ctx) #if FEATURE_ARB_shader_objects _mesa_init_shader_dispatch(ctx, exec); - _mesa_init_shader_uniform_dispatch(exec); + _mesa_init_shader_uniform_dispatch(ctx, exec); #endif /* 2. GL_EXT_blend_color */ diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index f43d0fb..e4dff5d 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -804,7 +804,8 @@ _mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex, * Plug in shader uniform-related functions into API dispatch table. */ void -_mesa_init_shader_uniform_dispatch(struct _glapi_table *exec) +_mesa_init_shader_uniform_dispatch(const struct gl_context *ctx, + struct _glapi_table *exec) { #if FEATURE_GL SET_Uniform1fARB(exec, _mesa_Uniform1fARB); @@ -833,38 +834,39 @@ _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec) SET_GetUniformivARB(exec, _mesa_GetUniformivARB); /* OpenGL 2.1 */ - SET_UniformMatrix2x3fv(exec, _mesa_UniformMatrix2x3fv); - SET_UniformMatrix3x2fv(exec, _mesa_UniformMatrix3x2fv); - SET_UniformMatrix2x4fv(exec, _mesa_UniformMatrix2x4fv); - SET_UniformMatrix4x2fv(exec, _mesa_UniformMatrix4x2fv); - SET_UniformMatrix3x4fv(exec, _mesa_UniformMatrix3x4fv); - SET_UniformMatrix4x3fv(exec, _mesa_UniformMatrix4x3fv); - - /* OpenGL 3.0 */ - SET_Uniform1uiEXT(exec, _mesa_Uniform1ui); - SET_Uniform2uiEXT(exec, _mesa_Uniform2ui); - SET_Uniform3uiEXT(exec, _mesa_Uniform3ui); - SET_Uniform4uiEXT(exec, _mesa_Uniform4ui); - SET_Uniform1uivEXT(exec, _mesa_Uniform1uiv); - SET_Uniform2uivEXT(exec, _mesa_Uniform2uiv); - SET_Uniform3uivEXT(exec, _mesa_Uniform3uiv); - SET_Uniform4uivEXT(exec, _mesa_Uniform4uiv); - SET_GetUniformuivEXT(exec, _mesa_GetUniformuiv); - - /* GL_ARB_robustness */ - SET_GetnUniformfvARB(exec, _mesa_GetnUniformfvARB); - SET_GetnUniformivARB(exec, _mesa_GetnUniformivARB); - SET_GetnUniformuivARB(exec, _mesa_GetnUniformuivARB); - SET_GetnUniformdvARB(exec, _mesa_GetnUniformdvARB); /* GL 4.0 */ - - /* GL_ARB_uniform_buffer_object / GL 3.1 */ - SET_GetUniformBlockIndex(exec, _mesa_GetUniformBlockIndex); - SET_GetUniformIndices(exec, _mesa_GetUniformIndices); - SET_GetActiveUniformsiv(exec, _mesa_GetActiveUniformsiv); - SET_GetActiveUniformBlockiv(exec, _mesa_GetActiveUniformBlockiv); - SET_GetActiveUniformBlockName(exec, _mesa_GetActiveUniformBlockName); - SET_GetActiveUniformName(exec, _mesa_GetActiveUniformName); - SET_UniformBlockBinding(exec, _mesa_UniformBlockBinding); - + if (ctx->API != API_OPENGLES2 || _mesa_is_gles3(ctx)) { + SET_UniformMatrix2x3fv(exec, _mesa_UniformMatrix2x3fv); + SET_UniformMatrix3x2fv(exec, _mesa_UniformMatrix3x2fv); + SET_UniformMatrix2x4fv(exec, _mesa_UniformMatrix2x4fv); + SET_UniformMatrix4x2fv(exec, _mesa_UniformMatrix4x2fv); + SET_UniformMatrix3x4fv(exec, _mesa_UniformMatrix3x4fv); + SET_UniformMatrix4x3fv(exec, _mesa_UniformMatrix4x3fv); + + /* OpenGL 3.0 */ + SET_Uniform1uiEXT(exec, _mesa_Uniform1ui); + SET_Uniform2uiEXT(exec, _mesa_Uniform2ui); + SET_Uniform3uiEXT(exec, _mesa_Uniform3ui); + SET_Uniform4uiEXT(exec, _mesa_Uniform4ui); + SET_Uniform1uivEXT(exec, _mesa_Uniform1uiv); + SET_Uniform2uivEXT(exec, _mesa_Uniform2uiv); + SET_Uniform3uivEXT(exec, _mesa_Uniform3uiv); + SET_Uniform4uivEXT(exec, _mesa_Uniform4uiv); + SET_GetUniformuivEXT(exec, _mesa_GetUniformuiv); + + /* GL_ARB_robustness */ + SET_GetnUniformfvARB(exec, _mesa_GetnUniformfvARB); + SET_GetnUniformivARB(exec, _mesa_GetnUniformivARB); + SET_GetnUniformuivARB(exec, _mesa_GetnUniformuivARB); + SET_GetnUniformdvARB(exec, _mesa_GetnUniformdvARB); /* GL 4.0 */ + + /* GL_ARB_uniform_buffer_object / GL 3.1 */ + SET_GetUniformBlockIndex(exec, _mesa_GetUniformBlockIndex); + SET_GetUniformIndices(exec, _mesa_GetUniformIndices); + SET_GetActiveUniformsiv(exec, _mesa_GetActiveUniformsiv); + SET_GetActiveUniformBlockiv(exec, _mesa_GetActiveUniformBlockiv); + SET_GetActiveUniformBlockName(exec, _mesa_GetActiveUniformBlockName); + SET_GetActiveUniformName(exec, _mesa_GetActiveUniformName); + SET_UniformBlockBinding(exec, _mesa_UniformBlockBinding); + } #endif /* FEATURE_GL */ } diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h index bb05524..3bf3627 100644 --- a/src/mesa/main/uniforms.h +++ b/src/mesa/main/uniforms.h @@ -227,7 +227,8 @@ _mesa_sampler_uniforms_are_valid(const struct gl_shader_program *shProg, char *errMsg, size_t errMsgLength); extern void -_mesa_init_shader_uniform_dispatch(struct _glapi_table *exec); +_mesa_init_shader_uniform_dispatch(const struct gl_context *ctx, + struct _glapi_table *exec); extern const struct gl_program_parameter * get_uniform_parameter(struct gl_shader_program *shProg, GLint index); -- 2.7.4