summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
index 02cca409e1e..1da50d62f93 100644
--- a/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/3rdparty/bgfx/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
@@ -622,6 +622,19 @@ void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& mem
globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding;
globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet;
+ // Check for declarations of this default uniform that already exist due to other compilation units.
+ TSymbol* symbol = symbolTable.find(memberName);
+ if (symbol) {
+ if (memberType != symbol->getType()) {
+ TString err;
+ err += "\"" + memberType.getCompleteString() + "\"";
+ err += " versus ";
+ err += "\"" + symbol->getType().getCompleteString() + "\"";
+ error(loc, "Types must match:", memberType.getFieldName().c_str(), err.c_str());
+ }
+ return;
+ }
+
// Add the requested member as a member to the global block.
TType* type = new TType;
type->shallowCopy(memberType);