Added non square matrix construction
Added new construction operations for
non square matrices, along with the
required changes to the related
translation functions.
Change-Id: I04ae7d4b2d1bb363b35d088cea45c0e7c4bc8a13
Reviewed-on: https://chromium-review.googlesource.com/277729
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index b587f5e..50bd30c 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -536,7 +536,13 @@
switch(op)
{
case EOpConstructMat2:
+ case EOpConstructMat2x3:
+ case EOpConstructMat2x4:
+ case EOpConstructMat3x2:
case EOpConstructMat3:
+ case EOpConstructMat3x4:
+ case EOpConstructMat4x2:
+ case EOpConstructMat4x3:
case EOpConstructMat4:
constructingMatrix = true;
break;
@@ -1815,12 +1821,32 @@
case EbtFloat:
if (publicType.isMatrix())
{
- // TODO: non-square matrices
switch(publicType.getCols())
{
- case 2: op = EOpConstructMat2; break;
- case 3: op = EOpConstructMat3; break;
- case 4: op = EOpConstructMat4; break;
+ case 2:
+ switch(publicType.getRows())
+ {
+ case 2: op = EOpConstructMat2; break;
+ case 3: op = EOpConstructMat2x3; break;
+ case 4: op = EOpConstructMat2x4; break;
+ }
+ break;
+ case 3:
+ switch(publicType.getRows())
+ {
+ case 2: op = EOpConstructMat3x2; break;
+ case 3: op = EOpConstructMat3; break;
+ case 4: op = EOpConstructMat3x4; break;
+ }
+ break;
+ case 4:
+ switch(publicType.getRows())
+ {
+ case 2: op = EOpConstructMat4x2; break;
+ case 3: op = EOpConstructMat4x3; break;
+ case 4: op = EOpConstructMat4; break;
+ }
+ break;
}
}
else