diff options
author | Ian Romanick <[email protected]> | 2013-06-10 10:35:05 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2013-06-12 16:30:18 -0700 |
commit | 26d86d26f9f972b19c7040bdb1b1daf48537ef3e (patch) | |
tree | e457f7c4d14e6781949bf339c09863f6cf24ba32 /src/mesa/main/uniforms.h | |
parent | 5097f358419c067a71e96e39764b3bb0a716bdbb (diff) |
glsl: Add gl_shader_program::UniformLocationBaseScale
This is used by _mesa_uniform_merge_location_offset and
_mesa_uniform_split_location_offset to determine how the base and offset
are packed. Previously, this value was hard coded as (1U<<16) in those
functions via the shift and mask contained therein. The value is still
(1U<<16), but it can be changed in the future.
The next patch dynamically generates this value.
NOTE: This is a candidate for stable release branches.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Reviewed-and-tested-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/mesa/main/uniforms.h')
-rw-r--r-- | src/mesa/main/uniforms.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h index d718b0f12e3..14fe26d5fde 100644 --- a/src/mesa/main/uniforms.h +++ b/src/mesa/main/uniforms.h @@ -272,7 +272,9 @@ static inline GLint _mesa_uniform_merge_location_offset(const struct gl_shader_program *prog, unsigned base_location, unsigned offset) { - return (base_location << 16) | offset; + assert(prog->UniformLocationBaseScale >= 0); + assert(offset < prog->UniformLocationBaseScale); + return (base_location * prog->UniformLocationBaseScale) + offset; } /** @@ -283,8 +285,8 @@ _mesa_uniform_split_location_offset(const struct gl_shader_program *prog, GLint location, unsigned *base_location, unsigned *offset) { - *offset = location & 0xffff; - *base_location = location >> 16; + *offset = location % prog->UniformLocationBaseScale; + *base_location = location / prog->UniformLocationBaseScale; } /*@}*/ |