diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-07-05 16:19:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-05 21:02:39 +0000 |
commit | 9fb036fb133d0b2eafb95a86a06b7910c0b0039c (patch) | |
tree | 29304b0dd265f2457e44d4a9a8b26d7685de86ec /src/sksl/SkSLHCodeGenerator.cpp | |
parent | 412cda7379626ee3acfd1dbb1441adde81efddc3 (diff) |
rewrote GrAlphaThresholdFragmentProcessor in sksl
Bug: skia:
Change-Id: I641b206fc3bc19ac190ad94ee755ab9e1caab9b3
Reviewed-on: https://skia-review.googlesource.com/21341
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/sksl/SkSLHCodeGenerator.cpp')
-rw-r--r-- | src/sksl/SkSLHCodeGenerator.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/sksl/SkSLHCodeGenerator.cpp b/src/sksl/SkSLHCodeGenerator.cpp index 1bfd9b10e1..ac56f03c92 100644 --- a/src/sksl/SkSLHCodeGenerator.cpp +++ b/src/sksl/SkSLHCodeGenerator.cpp @@ -48,13 +48,15 @@ String HCodeGenerator::FieldType(const Type& type) { void HCodeGenerator::writef(const char* s, va_list va) { static constexpr int BUFFER_SIZE = 1024; + va_list copy; + va_copy(copy, va); char buffer[BUFFER_SIZE]; int length = vsnprintf(buffer, BUFFER_SIZE, s, va); if (length < BUFFER_SIZE) { fOut->write(buffer, length); } else { std::unique_ptr<char[]> heap(new char[length + 1]); - vsprintf(heap.get(), s, va); + vsprintf(heap.get(), s, copy); fOut->write(heap.get(), length); } } @@ -166,7 +168,7 @@ void HCodeGenerator::writeConstructor() { for (const auto& param : fSectionAndParameterHelper.fParameters) { const char* name = param->fName.c_str(); if (param->fType.kind() == Type::kSampler_Kind) { - this->writef("\n , %s(resourceProvider, std::move(%s))", FieldName(name).c_str(), + this->writef("\n , %s(std::move(%s))", FieldName(name).c_str(), name); } else { this->writef("\n , %s(%s)", FieldName(name).c_str(), name); @@ -196,12 +198,13 @@ void HCodeGenerator::writeFields() { bool HCodeGenerator::generateCode() { this->writef(kFragmentProcessorHeader, fFullName.c_str()); this->writef("#ifndef %s_DEFINED\n" - "#define %s_DEFINED\n" - "#include \"GrFragmentProcessor.h\"\n" - "#include \"GrCoordTransform.h\"\n" - "#include \"effects/GrProxyMove.h\"\n", - fFullName.c_str(), fFullName.c_str()); + "#define %s_DEFINED\n", + fFullName.c_str(), + fFullName.c_str()); this->writeSection(HEADER_SECTION); + this->writef("#include \"GrFragmentProcessor.h\"\n" + "#include \"GrCoordTransform.h\"\n" + "#include \"effects/GrProxyMove.h\"\n"); this->writef("class %s : public GrFragmentProcessor {\n" "public:\n", fFullName.c_str()); @@ -211,7 +214,7 @@ bool HCodeGenerator::generateCode() { continue; } const char* name = param->fName.c_str(); - this->writef("%s %s() const { return %s; }\n", + this->writef(" %s %s() const { return %s; }\n", FieldType(param->fType).c_str(), name, FieldName(name).c_str()); } this->writeMake(); @@ -226,8 +229,9 @@ bool HCodeGenerator::generateCode() { " GR_DECLARE_FRAGMENT_PROCESSOR_TEST;\n"); this->writeFields(); this->writef(" typedef GrFragmentProcessor INHERITED;\n" - "};\n" - "#endif\n"); + "};\n"); + this->writeSection(HEADER_END_SECTION); + this->writef("#endif\n"); return 0 == fErrors.errorCount(); } |