aboutsummaryrefslogtreecommitdiff
path: root/glslang/MachineIndependent/linkValidate.cpp
diff options
context:
space:
mode:
authorJohn Kessenich <cepheus@frii.com>2013-11-27 02:41:52 +0000
committerJohn Kessenich <cepheus@frii.com>2013-11-27 02:41:52 +0000
commit1fbaa35ce7d1dc600186c8f2e46698413ce733eb (patch)
tree3cc9ce6cb4a3d3381c8583448e7888774e9870fc /glslang/MachineIndependent/linkValidate.cpp
parent474b84bdcf8b1629e999ee6b65156798fa430481 (diff)
downloadglslang-1fbaa35ce7d1dc600186c8f2e46698413ce733eb.tar.gz
Compile-time check on sampler binding size, link-time merging and checking of bindings.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24218 e7fa87d3-cd2b-0410-9028-fcbf551c1848
Diffstat (limited to 'glslang/MachineIndependent/linkValidate.cpp')
-rw-r--r--glslang/MachineIndependent/linkValidate.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 139580bd..b0669128 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -159,6 +159,10 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin
// the initializer
if (symbol->getConstArray().empty() && ! unitSymbol->getConstArray().empty())
symbol->setConstArray(unitSymbol->getConstArray());
+
+ // Similarly for binding
+ if (! symbol->getQualifier().hasBinding() && unitSymbol->getQualifier().hasBinding())
+ symbol->getQualifier().layoutBinding = unitSymbol->getQualifier().layoutBinding;
// Check for consistent types/qualification/initializers etc.
mergeErrorCheck(infoSink, *symbol, *unitSymbol, false);
@@ -230,7 +234,8 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy
// Layouts...
if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix ||
symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking ||
- symbol.getQualifier().layoutSlotLocation != unitSymbol.getQualifier().layoutSlotLocation) {
+ symbol.getQualifier().layoutSlotLocation != unitSymbol.getQualifier().layoutSlotLocation ||
+ symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) {
error(infoSink, "Layout qualification must match:");
writeTypeComparison = true;
}