From: Ian Romanick Date: Mon, 10 Jun 2013 17:33:59 +0000 (-0700) Subject: glsl: Add a gl_shader_program parameter to _mesa_uniform_{merge,split}_location_offset X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5097f358419c067a71e96e39764b3bb0a716bdbb;p=mesa.git glsl: Add a gl_shader_program parameter to _mesa_uniform_{merge,split}_location_offset This will be used in the next commit. NOTE: This is a candidate for stable release branches. Signed-off-by: Ian Romanick Reviewed-by: Brian Paul Reviewed-and-tested-by: Chad Versace --- diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp index ec3104936e4..296f80f17bf 100644 --- a/src/mesa/main/uniform_query.cpp +++ b/src/mesa/main/uniform_query.cpp @@ -235,7 +235,7 @@ validate_uniform_parameters(struct gl_context *ctx, return false; } - _mesa_uniform_split_location_offset(location, loc, array_index); + _mesa_uniform_split_location_offset(shProg, location, loc, array_index); if (*loc >= shProg->NumUserUniformStorage) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(location=%d)", diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index 6d79df6835f..17e62403de2 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -538,7 +538,7 @@ _mesa_GetUniformLocation(GLhandleARB programObj, const GLcharARB *name) if (shProg->UniformStorage[index].block_index != -1) return -1; - return _mesa_uniform_merge_location_offset(index, offset); + return _mesa_uniform_merge_location_offset(shProg, index, offset); } GLuint GLAPIENTRY diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h index 5ebd5e49a78..d718b0f12e3 100644 --- a/src/mesa/main/uniforms.h +++ b/src/mesa/main/uniforms.h @@ -269,7 +269,8 @@ struct gl_builtin_uniform_desc { * Combine the uniform's base location and the offset */ static inline GLint -_mesa_uniform_merge_location_offset(unsigned base_location, unsigned offset) +_mesa_uniform_merge_location_offset(const struct gl_shader_program *prog, + unsigned base_location, unsigned offset) { return (base_location << 16) | offset; } @@ -278,7 +279,8 @@ _mesa_uniform_merge_location_offset(unsigned base_location, unsigned offset) * Separate the uniform base location and parameter offset */ static inline void -_mesa_uniform_split_location_offset(GLint location, unsigned *base_location, +_mesa_uniform_split_location_offset(const struct gl_shader_program *prog, + GLint location, unsigned *base_location, unsigned *offset) { *offset = location & 0xffff; diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index f8176eb77b2..d6796d7a11e 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -3096,7 +3096,7 @@ set_uniform_initializer(struct gl_context *ctx, void *mem_ctx, "Couldn't find uniform for initializer %s\n", name); return; } - int loc = _mesa_uniform_merge_location_offset(index, offset); + int loc = _mesa_uniform_merge_location_offset(shader_program, index, offset); for (unsigned int i = 0; i < (type->is_array() ? type->length : 1); i++) { ir_constant *element;