diff options
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp')
-rw-r--r-- | src/3rdparty/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp b/src/3rdparty/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp index 8857ad59bd..775c5d8710 100644 --- a/src/3rdparty/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp +++ b/src/3rdparty/angle/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp @@ -4,8 +4,8 @@ // found in the LICENSE file. // +#include "common/debug.h" #include "compiler/translator/ScalarizeVecAndMatConstructorArgs.h" -#include "compiler/translator/compilerdebug.h" #include <algorithm> @@ -39,7 +39,7 @@ bool ContainsVectorNode(const TIntermSequence &sequence) TIntermConstantUnion *ConstructIndexNode(int index) { - ConstantUnion *u = new ConstantUnion[1]; + TConstantUnion *u = new TConstantUnion[1]; u[0].setIConst(index); TType type(EbtInt, EbpUndefined, EvqConst, 1); @@ -109,7 +109,13 @@ bool ScalarizeVecAndMatConstructorArgs::visitAggregate(Visit visit, TIntermAggre scalarizeArgs(node, false, true); break; case EOpConstructMat2: + case EOpConstructMat2x3: + case EOpConstructMat2x4: + case EOpConstructMat3x2: case EOpConstructMat3: + case EOpConstructMat3x4: + case EOpConstructMat4x2: + case EOpConstructMat4x3: case EOpConstructMat4: if (ContainsVectorNode(*(node->getSequence()))) scalarizeArgs(node, true, false); @@ -144,9 +150,21 @@ void ScalarizeVecAndMatConstructorArgs::scalarizeArgs( case EOpConstructMat2: size = 4; break; + case EOpConstructMat2x3: + case EOpConstructMat3x2: + size = 6; + break; + case EOpConstructMat2x4: + case EOpConstructMat4x2: + size = 8; + break; case EOpConstructMat3: size = 9; break; + case EOpConstructMat3x4: + case EOpConstructMat4x3: + size = 12; + break; case EOpConstructMat4: size = 16; break; |