| Index: src/gpu/gl/builders/GrGLFullProgramBuilder.h
|
| diff --git a/src/gpu/gl/builders/GrGLFullProgramBuilder.h b/src/gpu/gl/builders/GrGLFullProgramBuilder.h
|
| index 3ba5724578a97acd7bb620bdf9677e1ad9a3f1e7..7480ff3858b56f351fd3d136b1751e44c39645a2 100644
|
| --- a/src/gpu/gl/builders/GrGLFullProgramBuilder.h
|
| +++ b/src/gpu/gl/builders/GrGLFullProgramBuilder.h
|
| @@ -10,6 +10,8 @@
|
|
|
| #include "GrGLProgramBuilder.h"
|
|
|
| +class GrGLVertexProgramEffects;
|
| +
|
| class GrGLFullProgramBuilder : public GrGLProgramBuilder {
|
| public:
|
| GrGLFullProgramBuilder(GrGpuGL*, const GrGLProgramDesc&);
|
| @@ -37,39 +39,45 @@ public:
|
| GrGLVertexShaderBuilder* getVertexShaderBuilder() { return &fVS; }
|
|
|
| private:
|
| - virtual void emitCodeBeforeEffects(GrGLSLExpr4* color,
|
| - GrGLSLExpr4* coverage) SK_OVERRIDE;
|
| -
|
| - virtual void emitGeometryProcessor(const GrEffectStage* geometryProcessor,
|
| - GrGLSLExpr4* coverage) SK_OVERRIDE;
|
| -
|
| - virtual GrGLProgramEffects* createAndEmitEffects(const GrEffectStage* effectStages[],
|
| - int effectCnt,
|
| - const GrGLProgramDesc::EffectKeyProvider&,
|
| - GrGLSLExpr4* inOutFSColor) SK_OVERRIDE;
|
| -
|
| - /*
|
| - * These functions are temporary and will eventually operate not on effects but on
|
| - * geometry processors
|
| + virtual void createAndEmitEffects(const GrEffectStage* geometryProcessor,
|
| + const GrEffectStage* colorStages[],
|
| + const GrEffectStage* coverageStages[],
|
| + GrGLSLExpr4* inputColor,
|
| + GrGLSLExpr4* inputCoverage) SK_OVERRIDE;
|
| +
|
| + GrGLProgramEffects* onCreateAndEmitEffects(const GrEffectStage* effectStages[],
|
| + int effectCnt,
|
| + const GrGLProgramDesc::EffectKeyProvider&,
|
| + GrGLSLExpr4* inOutFSColor);
|
| +
|
| + virtual void emitEffect(const GrEffectStage& stage,
|
| + const GrEffectKey& key,
|
| + const char* outColor,
|
| + const char* inColor,
|
| + int stageIndex) SK_OVERRIDE;
|
| +
|
| + /**
|
| + * Helper for emitEffect(). Emits code to implement an effect's coord transforms in the VS.
|
| + * Varyings are added as an outputs of the VS and inputs to the FS. The varyings may be either a
|
| + * vec2f or vec3f depending upon whether perspective interpolation is required or not. The names
|
| + * of the varyings in the VS and FS as well their types are appended to the
|
| + * TransformedCoordsArray* object, which is in turn passed to the effect's emitCode() function.
|
| */
|
| - void createAndEmitEffect(GrGLProgramEffectsBuilder*,
|
| - const GrEffectStage* effectStage,
|
| - const GrGLProgramDesc::EffectKeyProvider&,
|
| - GrGLSLExpr4* inOutFSColor);
|
| -
|
| - GrGLProgramEffects* createAndEmitEffect(const GrEffectStage* geometryProcessor,
|
| - const GrGLProgramDesc::EffectKeyProvider&,
|
| - GrGLSLExpr4* inOutFSColor);
|
| -
|
| - virtual void emitCodeAfterEffects() SK_OVERRIDE;
|
| + void emitTransforms(const GrEffectStage& effectStage,
|
| + GrGLEffect::TransformedCoordsArray* outCoords);
|
|
|
| virtual bool compileAndAttachShaders(GrGLuint programId,
|
| SkTDArray<GrGLuint>* shaderIds) const SK_OVERRIDE;
|
|
|
| virtual void bindProgramLocations(GrGLuint programId) SK_OVERRIDE;
|
|
|
| + virtual GrGLProgramEffects* getProgramEffects() SK_OVERRIDE { return fProgramEffects.get(); }
|
| +
|
| + typedef GrGLProgramDesc::EffectKeyProvider EffectKeyProvider;
|
| +
|
| GrGLGeometryShaderBuilder fGS;
|
| GrGLVertexShaderBuilder fVS;
|
| + SkAutoTDelete<GrGLVertexProgramEffects> fProgramEffects;
|
|
|
| typedef GrGLProgramBuilder INHERITED;
|
| };
|
|
|