fixed Metal matrix constructors
Bug: skia:8544
Change-Id: Ie1e96ab1ef6e8c032fa510be36c035f91a1f6851
Reviewed-on: https://skia-review.googlesource.com/c/185687
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLMetalCodeGenerator.h b/src/sksl/SkSLMetalCodeGenerator.h
index 1a3a790..3ed2524 100644
--- a/src/sksl/SkSLMetalCodeGenerator.h
+++ b/src/sksl/SkSLMetalCodeGenerator.h
@@ -184,9 +184,13 @@
void writeInverseHack(const Expression& mat);
+ String getMatrixConstructHelper(const Type& matrix, const Type& arg);
+
void writeSpecialIntrinsic(const FunctionCall& c, SpecialIntrinsic kind);
- void writeConstructor(const Constructor& c);
+ bool canCoerce(const Type& t1, const Type& t2);
+
+ void writeConstructor(const Constructor& c, Precedence parentPrecedence);
void writeFieldAccess(const FieldAccess& f);
@@ -268,6 +272,7 @@
std::unordered_map<const FunctionDeclaration*, Requirements> fRequirements;
bool fSetupFragPositionGlobal = false;
bool fSetupFragPositionLocal = false;
+ std::unordered_map<String, String> fMatrixConstructHelpers;
int fUniformBuffer = -1;
typedef CodeGenerator INHERITED;