Index: src/sksl/SkSLGLSLCodeGenerator.h |
diff --git a/src/sksl/SkSLGLSLCodeGenerator.h b/src/sksl/SkSLGLSLCodeGenerator.h |
index 3534affccca2baa5f00aec7c38fdfa9d7a60eecb..985112370822eceb67eaea7fd2178d53798a4ce7 100644 |
--- a/src/sksl/SkSLGLSLCodeGenerator.h |
+++ b/src/sksl/SkSLGLSLCodeGenerator.h |
@@ -50,6 +50,11 @@ struct GLCaps { |
kGL_Standard, |
kGLES_Standard |
} fStandard; |
+ bool fIsCoreProfile; |
+ bool fUsesPrecisionModifiers; |
+ bool fMustDeclareFragmentShaderOutput; |
+ // The Tegra3 compiler will sometimes never return if we have min(abs(x), y) |
+ bool fCanUseMinAndAbsTogether; |
}; |
/** |
@@ -81,6 +86,8 @@ public: |
GLSLCodeGenerator(const Context* context, GLCaps caps) |
: fContext(*context) |
, fCaps(caps) |
+ , fOut(nullptr) |
+ , fVarCount(0) |
, fIndentation(0) |
, fAtLineStart(true) {} |
@@ -111,11 +118,11 @@ private: |
void writeLayout(const Layout& layout); |
- void writeModifiers(const Modifiers& modifiers); |
+ void writeModifiers(const Modifiers& modifiers, bool globalContext); |
void writeGlobalVars(const VarDeclaration& vs); |
- void writeVarDeclarations(const VarDeclarations& decl); |
+ void writeVarDeclarations(const VarDeclarations& decl, bool global); |
void writeVariableReference(const VariableReference& ref); |
@@ -123,6 +130,8 @@ private: |
void writeIntrinsicCall(const FunctionCall& c); |
+ void writeMinAbsHack(Expression& absExpr, Expression& otherExpr); |
+ |
void writeFunctionCall(const FunctionCall& c); |
void writeConstructor(const Constructor& c); |
@@ -164,6 +173,9 @@ private: |
const Context& fContext; |
const GLCaps fCaps; |
std::ostream* fOut; |
+ std::string fFunctionHeader; |
+ Program::Kind fProgramKind; |
+ int fVarCount; |
int fIndentation; |
bool fAtLineStart; |
// Keeps track of which struct types we have written. Given that we are unlikely to ever write |