SkSL coordTransform argument is now optional
Bug: skia:8225
Change-Id: Iae0cb9c6bd640e9bdc3136d19e730bfe3ff1769f
Reviewed-on: https://skia-review.googlesource.com/145521
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLHCodeGenerator.cpp b/src/sksl/SkSLHCodeGenerator.cpp
index 0acd334..532ebef 100644
--- a/src/sksl/SkSLHCodeGenerator.cpp
+++ b/src/sksl/SkSLHCodeGenerator.cpp
@@ -216,10 +216,17 @@
this->writef("\n , %s(%s)", FieldName(name).c_str(), name);
}
}
- for (const Section* s : fSectionAndParameterHelper.getSections(COORD_TRANSFORM_SECTION)) {
- String field = FieldName(s->fArgument.c_str());
- this->writef("\n , %sCoordTransform(%s, %s.proxy())", field.c_str(), s->fText.c_str(),
- field.c_str());
+ const auto transforms = fSectionAndParameterHelper.getSections(COORD_TRANSFORM_SECTION);
+ for (size_t i = 0; i < transforms.size(); ++i) {
+ const Section& s = *transforms[i];
+ String field = CoordTransformName(s.fArgument.c_str(), i);
+ if (s.fArgument.size()) {
+ this->writef("\n , %s(%s, %s.proxy())", field.c_str(), s.fText.c_str(),
+ FieldName(s.fArgument.c_str()).c_str());
+ }
+ else {
+ this->writef("\n , %s(%s)", field.c_str(), s.fText.c_str());
+ }
}
this->writef(" {\n");
this->writeSection(CONSTRUCTOR_CODE_SECTION);
@@ -235,9 +242,10 @@
if (samplerCount) {
this->writef(" this->setTextureSamplerCnt(%d);", samplerCount);
}
- for (const Section* s : fSectionAndParameterHelper.getSections(COORD_TRANSFORM_SECTION)) {
- String field = FieldName(s->fArgument.c_str());
- this->writef(" this->addCoordTransform(&%sCoordTransform);\n", field.c_str());
+ for (size_t i = 0; i < transforms.size(); ++i) {
+ const Section& s = *transforms[i];
+ String field = CoordTransformName(s.fArgument.c_str(), i);
+ this->writef(" this->addCoordTransform(&%s);\n", field.c_str());
}
this->writef(" }\n");
}
@@ -252,9 +260,11 @@
param->fModifiers.fLayout).c_str(),
FieldName(String(param->fName).c_str()).c_str());
}
- for (const Section* s : fSectionAndParameterHelper.getSections(COORD_TRANSFORM_SECTION)) {
- this->writef(" GrCoordTransform %sCoordTransform;\n",
- FieldName(s->fArgument.c_str()).c_str());
+ const auto transforms = fSectionAndParameterHelper.getSections(COORD_TRANSFORM_SECTION);
+ for (size_t i = 0; i < transforms.size(); ++i) {
+ const Section& s = *transforms[i];
+ this->writef(" GrCoordTransform %s;\n",
+ CoordTransformName(s.fArgument.c_str(), i).c_str());
}
}