mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 10:50:10 +01:00
glsl: Cross-validate explicit binding points.
All compilation units need to agree on the binding point, if they specify one at all. v2: Use binding, not constant_value. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
d4375fc016
commit
9a9a830b44
1 changed files with 19 additions and 0 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue