diff options
author | marha <marha@users.sourceforge.net> | 2012-05-25 15:19:41 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-05-25 15:19:41 +0200 |
commit | eef864d36de97903007f04fad9fa43afe297745b (patch) | |
tree | 28dd3cae5f699b493e4d72e7e7d468a5a2cae7f4 /mesalib/src/glsl/link_uniforms.cpp | |
parent | f543ceaca6820260f15a4eff86938214cf43c7d2 (diff) | |
download | vcxsrv-eef864d36de97903007f04fad9fa43afe297745b.tar.gz vcxsrv-eef864d36de97903007f04fad9fa43afe297745b.tar.bz2 vcxsrv-eef864d36de97903007f04fad9fa43afe297745b.zip |
fontconfig xserver xkeyboard-config pixman git update 2012
Diffstat (limited to 'mesalib/src/glsl/link_uniforms.cpp')
-rw-r--r-- | mesalib/src/glsl/link_uniforms.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mesalib/src/glsl/link_uniforms.cpp b/mesalib/src/glsl/link_uniforms.cpp index 2f1c9f5f7..92e2a1fa5 100644 --- a/mesalib/src/glsl/link_uniforms.cpp +++ b/mesalib/src/glsl/link_uniforms.cpp @@ -329,9 +329,16 @@ link_assign_uniform_locations(struct gl_shader_program *prog) prog->UniformHash = new string_to_uint_map; } - for (unsigned i = 0; i < Elements(prog->SamplerUnits); i++) { - prog->SamplerUnits[i] = i; - } + /* Uniforms that lack an initializer in the shader code have an initial + * value of zero. This includes sampler uniforms. + * + * Page 24 (page 30 of the PDF) of the GLSL 1.20 spec says: + * + * "The link time initial value is either the value of the variable's + * initializer, if present, or 0 if no initializer is present. Sampler + * types cannot have initializers." + */ + memset(prog->SamplerUnits, 0, sizeof(prog->SamplerUnits)); /* First pass: Count the uniform resources used by the user-defined * uniforms. While this happens, each active uniform will have an index @@ -426,5 +433,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) prog->NumUserUniformStorage = num_user_uniforms; prog->UniformStorage = uniforms; + link_set_uniform_initializers(prog); + return; } |