Fix assert on using GLSL sampler function arguments.
Bug b/31651425
Change-Id: Ic6c1f16b1ec3ef039e15e72e70a1daee711fba2f
Reviewed-on: https://swiftshader-review.googlesource.com/9748
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/compiler/OutputASM.cpp b/src/OpenGL/compiler/OutputASM.cpp
index 49f62b1..a0b5500 100644
--- a/src/OpenGL/compiler/OutputASM.cpp
+++ b/src/OpenGL/compiler/OutputASM.cpp
@@ -2944,9 +2944,19 @@
TIntermSymbol *symbol = sampler->getAsSymbolNode();
TIntermBinary *binary = sampler->getAsBinaryNode();
- if(symbol && type.getQualifier() == EvqUniform)
+ if(symbol)
{
- return samplerRegister(symbol);
+ switch(type.getQualifier())
+ {
+ case EvqUniform:
+ return samplerRegister(symbol);
+ case EvqIn:
+ case EvqConstReadOnly:
+ // Function arguments are not (uniform) sampler registers
+ return -1;
+ default:
+ UNREACHABLE(type.getQualifier());
+ }
}
else if(binary)
{
@@ -2992,7 +3002,7 @@
}
UNREACHABLE(0);
- return -1; // Not a sampler register
+ return -1; // Not a (uniform) sampler register
}
int OutputASM::samplerRegister(TIntermSymbol *sampler)