Fix matrix compound multiplication
Matrix compound multiplication was lacking transposes. Add them so that
results match normal multiplication.
BUG=angleproject:938
TEST=dEQP-GLES3.functional.shaders.matrix.mul_assign.*
Change-Id: I4c5159de0727afb4ee2831586f04fa817619de7a
Reviewed-on: https://chromium-review.googlesource.com/256366
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
diff --git a/src/compiler/translator/OutputHLSL.cpp b/src/compiler/translator/OutputHLSL.cpp
index 5bf7d7b..bebaeb5 100644
--- a/src/compiler/translator/OutputHLSL.cpp
+++ b/src/compiler/translator/OutputHLSL.cpp
@@ -1454,13 +1454,13 @@
}
else if (visit == InVisit)
{
- out << " = mul(";
+ out << " = transpose(mul(transpose(";
node->getLeft()->traverse(this);
- out << ", ";
+ out << "), transpose(";
}
else
{
- out << "))";
+ out << "))))";
}
break;
case EOpDivAssign: outputTriplet(visit, "(", " /= ", ")"); break;