diff options
Diffstat (limited to 'src/sksl/SkSLGLSLCodeGenerator.cpp')
-rw-r--r-- | src/sksl/SkSLGLSLCodeGenerator.cpp | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/src/sksl/SkSLGLSLCodeGenerator.cpp b/src/sksl/SkSLGLSLCodeGenerator.cpp index 5f6fedcdb5..76e76c3271 100644 --- a/src/sksl/SkSLGLSLCodeGenerator.cpp +++ b/src/sksl/SkSLGLSLCodeGenerator.cpp @@ -1264,25 +1264,6 @@ void GLSLCodeGenerator::writeHeader() { this->writeExtension((Extension&) e); } } - if (!fProgram.fSettings.fCaps->canUseFragCoord()) { - Layout layout; - switch (fProgram.fKind) { - case Program::kVertex_Kind: { - Modifiers modifiers(layout, Modifiers::kOut_Flag | Modifiers::kHighp_Flag); - this->writeModifiers(modifiers, true); - this->write("vec4 sk_FragCoord_Workaround;\n"); - break; - } - case Program::kFragment_Kind: { - Modifiers modifiers(layout, Modifiers::kIn_Flag | Modifiers::kHighp_Flag); - this->writeModifiers(modifiers, true); - this->write("vec4 sk_FragCoord_Workaround;\n"); - break; - } - default: - break; - } - } } void GLSLCodeGenerator::writeProgramElement(const ProgramElement& e) { @@ -1359,6 +1340,27 @@ bool GLSLCodeGenerator::generateCode() { fOut = rawOut; write_stringstream(fHeader, *rawOut); + + if (!fProgram.fSettings.fCaps->canUseFragCoord()) { + Layout layout; + switch (fProgram.fKind) { + case Program::kVertex_Kind: { + Modifiers modifiers(layout, Modifiers::kOut_Flag | Modifiers::kHighp_Flag); + this->writeModifiers(modifiers, true); + this->write("vec4 sk_FragCoord_Workaround;\n"); + break; + } + case Program::kFragment_Kind: { + Modifiers modifiers(layout, Modifiers::kIn_Flag | Modifiers::kHighp_Flag); + this->writeModifiers(modifiers, true); + this->write("vec4 sk_FragCoord_Workaround;\n"); + break; + } + default: + break; + } + } + if (this->usesPrecisionModifiers()) { this->writeLine("precision mediump float;"); } |