Index: src/gpu/gl/builders/GrGLFullProgramBuilder.h |
diff --git a/src/gpu/gl/builders/GrGLFullProgramBuilder.h b/src/gpu/gl/builders/GrGLFullProgramBuilder.h |
deleted file mode 100644 |
index 0f3834187b9dbdf1ef0d9c77d8d8d584866ceb1a..0000000000000000000000000000000000000000 |
--- a/src/gpu/gl/builders/GrGLFullProgramBuilder.h |
+++ /dev/null |
@@ -1,130 +0,0 @@ |
-/* |
- * Copyright 2014 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#ifndef GrGLFullProgramBuilder_DEFINED |
-#define GrGLFullProgramBuilder_DEFINED |
- |
-#include "GrGLProgramBuilder.h" |
-#include "../GrGLGeometryProcessor.h" |
- |
-class GrGLVertexProgramEffects; |
- |
-class GrGLFullProgramBuilder : public GrGLProgramBuilder { |
-public: |
- GrGLFullProgramBuilder(GrGpuGL*, const GrOptDrawState&, const GrGLProgramDesc&); |
- |
- /** Add a varying variable to the current program to pass values between vertex and fragment |
- shaders. If the last two parameters are non-NULL, they are filled in with the name |
- generated. */ |
- void addVarying(GrSLType type, |
- const char* name, |
- const char** vsOutName = NULL, |
- const char** fsInName = NULL, |
- GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precision); |
- |
- /** Add a separable varying input variable to the current program. |
- * A separable varying (fragment shader input) is a varying that can be used also when vertex |
- * shaders are not used. With a vertex shader, the operation is same as with other |
- * varyings. Without a vertex shader, such as with NV_path_rendering, GL APIs are used to |
- * populate the variable. The APIs can refer to the variable through the returned handle. |
- */ |
- VaryingHandle addSeparableVarying(GrSLType type, |
- const char* name, |
- const char** vsOutName, |
- const char** fsInName); |
- |
- GrGLVertexShaderBuilder* getVertexShaderBuilder() { return &fVS; } |
- |
- /* |
- * This non-virtual call will hide the parent call to prevent GPs from accessing fragment shader |
- * functionality they shouldn't be using |
- */ |
- GrGLProcessorFragmentShaderBuilder* getFragmentShaderBuilder() { return &fFS; } |
- |
-private: |
- virtual void createAndEmitEffects(const GrGeometryStage* geometryProcessor, |
- const GrFragmentStage* colorStages[], |
- const GrFragmentStage* coverageStages[], |
- GrGLSLExpr4* inputColor, |
- GrGLSLExpr4* inputCoverage) SK_OVERRIDE; |
- |
- GrGLProgramEffects* onCreateAndEmitEffects(const GrFragmentStage* effectStages[], |
- int effectCnt, |
- const GrGLProgramDesc::EffectKeyProvider&, |
- GrGLSLExpr4* inOutFSColor); |
- |
- class GrGLGeometryProcessorEmitter : public GrGLProgramBuilder::GrGLProcessorEmitterInterface { |
- public: |
- GrGLGeometryProcessorEmitter(GrGLFullProgramBuilder* builder) |
- : fBuilder(builder) |
- , fGeometryProcessor(NULL) |
- , fGLGeometryProcessor(NULL) {} |
- virtual ~GrGLGeometryProcessorEmitter() {} |
- void set(const GrGeometryProcessor* gp) { |
- SkASSERT(NULL == fGeometryProcessor); |
- fGeometryProcessor = gp; |
- } |
- virtual GrGLProcessor* createGLInstance() { |
- SkASSERT(fGeometryProcessor); |
- SkASSERT(NULL == fGLGeometryProcessor); |
- fGLGeometryProcessor = |
- fGeometryProcessor->getFactory().createGLInstance(*fGeometryProcessor); |
- return fGLGeometryProcessor; |
- } |
- virtual void emit(const GrProcessorKey& key, |
- const char* outColor, |
- const char* inColor, |
- const GrGLProcessor::TransformedCoordsArray& coords, |
- const GrGLProcessor::TextureSamplerArray& samplers) { |
- SkASSERT(fGeometryProcessor); |
- SkASSERT(fGLGeometryProcessor); |
- fGLGeometryProcessor->emitCode(fBuilder, *fGeometryProcessor, key, outColor, |
- inColor, coords, samplers); |
- // this will not leak because it has already been used by createGLInstance |
- fGLGeometryProcessor = NULL; |
- fGeometryProcessor = NULL; |
- } |
- private: |
- GrGLFullProgramBuilder* fBuilder; |
- const GrGeometryProcessor* fGeometryProcessor; |
- GrGLGeometryProcessor* fGLGeometryProcessor; |
- }; |
- |
- virtual void emitEffect(const GrProcessorStage& stage, |
- const GrProcessorKey& 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 emitTransforms(const GrProcessorStage& effectStage, |
- GrGLProcessor::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; |
- |
- GrGLGeometryProcessorEmitter fGLGeometryProcessorEmitter; |
- GrGLGeometryShaderBuilder fGS; |
- GrGLVertexShaderBuilder fVS; |
- SkAutoTDelete<GrGLVertexProgramEffects> fProgramEffects; |
- |
- typedef GrGLProgramBuilder INHERITED; |
-}; |
- |
-#endif |