diff options
author | marha <marha@users.sourceforge.net> | 2013-07-19 08:33:43 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-07-19 08:33:43 +0200 |
commit | 45b71fd5b777a968310c537ace5efcd1443085a0 (patch) | |
tree | a3ef2b449659c3ba6c885d169c7796b3ef948867 /mesalib/src/glsl/linker.cpp | |
parent | 08bafbbe05abefabdb0c3238c3d9ecdcce1b692f (diff) | |
parent | 89bc3ee988b62eb5e10284bac32a176955546410 (diff) | |
download | vcxsrv-45b71fd5b777a968310c537ace5efcd1443085a0.tar.gz vcxsrv-45b71fd5b777a968310c537ace5efcd1443085a0.tar.bz2 vcxsrv-45b71fd5b777a968310c537ace5efcd1443085a0.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
mesa xkbcomp git update 19 Jul 2013
Diffstat (limited to 'mesalib/src/glsl/linker.cpp')
-rw-r--r-- | mesalib/src/glsl/linker.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp index ba97ade25..ac010cfbb 100644 --- a/mesalib/src/glsl/linker.cpp +++ b/mesalib/src/glsl/linker.cpp @@ -541,6 +541,25 @@ cross_validate_globals(struct gl_shader_program *prog, existing->explicit_location = true; } + /* From the GLSL 4.20 specification: + * "A link error will result if two compilation units in a program + * specify different integer-constant bindings for the same + * opaque-uniform name. However, it is not an error to specify a + * binding on some but not all declarations for the same name" + */ + if (var->explicit_binding) { + if (existing->explicit_binding && + var->binding != existing->binding) { + linker_error(prog, "explicit bindings for %s " + "`%s' have differing values\n", + mode_string(var), var->name); + return false; + } + + existing->binding = var->binding; + existing->explicit_binding = true; + } + /* Validate layout qualifiers for gl_FragDepth. * * From the AMD/ARB_conservative_depth specs: @@ -1147,7 +1166,7 @@ update_array_sizes(struct gl_shader_program *prog) } } - if (size + 1 != var->type->fields.array->length) { + if (size + 1 != var->type->length) { /* If this is a built-in uniform (i.e., it's backed by some * fixed-function state), adjust the number of state slots to * match the new array size. The number of slots per array entry |