| Index: src/gpu/gl/GrGLShaderBuilder.h
|
| diff --git a/src/gpu/gl/GrGLShaderBuilder.h b/src/gpu/gl/GrGLShaderBuilder.h
|
| index 42186defc2f221058ce814f355c3e0e10cf22932..3a93c1bf72e33e944c36403d06d8c9c975a32b65 100644
|
| --- a/src/gpu/gl/GrGLShaderBuilder.h
|
| +++ b/src/gpu/gl/GrGLShaderBuilder.h
|
| @@ -233,9 +233,6 @@ protected:
|
|
|
| const GrGLProgramDesc& desc() const { return fDesc; }
|
|
|
| - void setInputColor(const GrGLSLExpr4& inputColor) { fInputColor = inputColor; }
|
| - void setInputCoverage(const GrGLSLExpr4& inputCoverage) { fInputCoverage = inputCoverage; }
|
| -
|
| /** Add input/output variable declarations (i.e. 'varying') to the fragment shader. */
|
| GrGLShaderVar& fsInputAppend() { return fFSInputs.push_back(); }
|
|
|
| @@ -317,6 +314,15 @@ private:
|
| bool genProgram(const GrEffectStage* colorStages[], const GrEffectStage* coverageStages[]);
|
|
|
| /**
|
| + * The base class will emit the fragment code that precedes the per-effect code and then call
|
| + * this function. The subclass can use it to insert additional fragment code that should
|
| + * execute before the effects' code and/or emit other shaders (e.g. geometry, vertex).
|
| + *
|
| + * The subclass can modify the initial color or coverage
|
| + */
|
| + virtual void emitCodeBeforeEffects(GrGLSLExpr4* color, GrGLSLExpr4* coverage) = 0;
|
| +
|
| + /**
|
| * Adds code for effects and returns a GrGLProgramEffects* object. The caller is responsible for
|
| * deleting it when finished. effectStages contains the effects to add. effectKeys[i] is the key
|
| * generated from effectStages[i]. inOutFSColor specifies the input color to the first stage and
|
| @@ -329,6 +335,11 @@ private:
|
| int effectCnt,
|
| GrGLSLExpr4* inOutFSColor) = 0;
|
|
|
| + /**
|
| + * Similar to emitCodeBeforeEffects() but called after per-effect code is emitted.
|
| + */
|
| + virtual void emitCodeAfterEffects() = 0;
|
| +
|
| /** Enables using the secondary color output and returns the name of the var in which it is
|
| to be stored */
|
| const char* enableSecondaryOutput();
|
| @@ -341,14 +352,6 @@ private:
|
| **/
|
| bool finish();
|
|
|
| - const GrGLSLExpr4& getInputColor() const {
|
| - return fInputColor;
|
| - }
|
| -
|
| - const GrGLSLExpr4& getInputCoverage() const {
|
| - return fInputCoverage;
|
| - }
|
| -
|
| /**
|
| * Features that should only be enabled by GrGLShaderBuilder itself.
|
| */
|
| @@ -392,9 +395,6 @@ private:
|
| bool fSetupFragPosition;
|
| bool fTopLeftFragPosRead;
|
|
|
| - GrGLSLExpr4 fInputColor;
|
| - GrGLSLExpr4 fInputCoverage;
|
| -
|
| bool fHasCustomColorOutput;
|
| bool fHasSecondaryOutput;
|
| };
|
| @@ -448,10 +448,15 @@ public:
|
| const SkString* getEffectAttributeName(int attributeIndex) const;
|
|
|
| private:
|
| + virtual void emitCodeBeforeEffects(GrGLSLExpr4* color, GrGLSLExpr4* coverage) SK_OVERRIDE;
|
| +
|
| virtual GrGLProgramEffects* createAndEmitEffects(const GrEffectStage* effectStages[],
|
| const EffectKey effectKeys[],
|
| int effectCnt,
|
| GrGLSLExpr4* inOutFSColor) SK_OVERRIDE;
|
| +
|
| + virtual void emitCodeAfterEffects() SK_OVERRIDE;
|
| +
|
| virtual bool compileAndAttachShaders(GrGLuint programId,
|
| SkTDArray<GrGLuint>* shaderIds) const SK_OVERRIDE;
|
|
|
| @@ -488,12 +493,15 @@ public:
|
| int addTexCoordSets(int count);
|
|
|
| private:
|
| + virtual void emitCodeBeforeEffects(GrGLSLExpr4* color, GrGLSLExpr4* coverage) SK_OVERRIDE {}
|
|
|
| virtual GrGLProgramEffects* createAndEmitEffects(const GrEffectStage* effectStages[],
|
| const EffectKey effectKeys[],
|
| int effectCnt,
|
| GrGLSLExpr4* inOutFSColor) SK_OVERRIDE;
|
|
|
| + virtual void emitCodeAfterEffects() SK_OVERRIDE {}
|
| +
|
| typedef GrGLShaderBuilder INHERITED;
|
| };
|
|
|
|
|