| 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
|
|
|