ES31: Simplify IsInShaderStorageBlock function
Bug: angleproject:1951
Change-Id: I0501502fa2201953a3dad4b18103ff5ae20db1bf
Reviewed-on: https://chromium-review.googlesource.com/c/1314298
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/compiler/translator/util.cpp b/src/compiler/translator/util.cpp
index 72ac655..af05122 100644
--- a/src/compiler/translator/util.cpp
+++ b/src/compiler/translator/util.cpp
@@ -753,30 +753,28 @@
bool IsInShaderStorageBlock(TIntermTyped *node)
{
- TIntermBinary *binaryNode = nullptr;
TIntermSwizzle *swizzleNode = node->getAsSwizzleNode();
if (swizzleNode)
{
- binaryNode = swizzleNode->getOperand()->getAsBinaryNode();
- if (binaryNode)
- {
- return IsInShaderStorageBlock(binaryNode->getLeft());
- }
- TIntermSymbol *symbolNode = swizzleNode->getOperand()->getAsSymbolNode();
- if (symbolNode)
- {
- return symbolNode->getQualifier() == EvqBuffer;
- }
+ return IsInShaderStorageBlock(swizzleNode->getOperand());
}
- binaryNode = node->getAsBinaryNode();
+ TIntermBinary *binaryNode = node->getAsBinaryNode();
if (binaryNode)
{
- return IsInShaderStorageBlock(binaryNode->getLeft());
+ switch (binaryNode->getOp())
+ {
+ case EOpIndexDirectInterfaceBlock:
+ case EOpIndexIndirect:
+ case EOpIndexDirect:
+ case EOpIndexDirectStruct:
+ return IsInShaderStorageBlock(binaryNode->getLeft());
+ default:
+ return false;
+ }
}
const TType &type = node->getType();
-
return type.getQualifier() == EvqBuffer;
}