aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/SkSLGLSLCodeGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sksl/SkSLGLSLCodeGenerator.cpp')
-rw-r--r--src/sksl/SkSLGLSLCodeGenerator.cpp40
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;");
}