moved SkSL FunctionDeclaration data into IRNode
Change-Id: I97a59563914c4f75f8cfdc2bd5a9ae430de9bb3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/323881
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/SkSLMetalCodeGenerator.cpp b/src/sksl/SkSLMetalCodeGenerator.cpp
index 5f4160a..63dc6c7 100644
--- a/src/sksl/SkSLMetalCodeGenerator.cpp
+++ b/src/sksl/SkSLMetalCodeGenerator.cpp
@@ -220,16 +220,17 @@
return;
}
const StringFragment& name = function.name();
- if (function.fBuiltin && name == "atan" && arguments.size() == 2) {
+ bool builtin = function.isBuiltin();
+ if (builtin && name == "atan" && arguments.size() == 2) {
this->write("atan2");
- } else if (function.fBuiltin && name == "inversesqrt") {
+ } else if (builtin && name == "inversesqrt") {
this->write("rsqrt");
- } else if (function.fBuiltin && name == "inverse") {
+ } else if (builtin && name == "inverse") {
SkASSERT(arguments.size() == 1);
this->writeInverseHack(*arguments[0]);
- } else if (function.fBuiltin && name == "dFdx") {
+ } else if (builtin && name == "dFdx") {
this->write("dfdx");
- } else if (function.fBuiltin && name == "dFdy") {
+ } else if (builtin && name == "dFdy") {
// Flipping Y also negates the Y derivatives.
this->write((fProgram.fSettings.fFlipY) ? "-dfdy" : "dfdy");
} else {
@@ -261,11 +262,12 @@
this->write("_fragCoord");
separator = ", ";
}
+ const std::vector<Variable*>& parameters = function.parameters();
for (size_t i = 0; i < arguments.size(); ++i) {
const Expression& arg = *arguments[i];
this->write(separator);
separator = ", ";
- if (function.fParameters[i]->modifiers().fFlags & Modifiers::kOut_Flag) {
+ if (parameters[i]->modifiers().fFlags & Modifiers::kOut_Flag) {
this->write("&");
}
this->writeExpression(arg, kSequence_Precedence);
@@ -1004,7 +1006,7 @@
}
separator = ", ";
} else {
- this->writeType(f.fDeclaration.fReturnType);
+ this->writeType(f.fDeclaration.returnType());
this->write(" ");
this->writeName(f.fDeclaration.name());
this->write("(");
@@ -1034,7 +1036,7 @@
separator = ", ";
}
}
- for (const auto& param : f.fDeclaration.fParameters) {
+ for (const auto& param : f.fDeclaration.parameters()) {
this->write(separator);
separator = ", ";
this->writeModifiers(param->modifiers(), false);
@@ -1801,7 +1803,7 @@
}
MetalCodeGenerator::Requirements MetalCodeGenerator::requirements(const FunctionDeclaration& f) {
- if (f.fBuiltin) {
+ if (f.isBuiltin()) {
return kNo_Requirements;
}
auto found = fRequirements.find(&f);