Chromium Code Reviews| Index: src/gpu/gl/builders/GrGLProgramBuilder.h |
| diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.h b/src/gpu/gl/builders/GrGLProgramBuilder.h |
| index 70cfad5633ec652417cc6e42cae2b5c1e09f37c1..d9dc783858fbabf9b9b7fb6fe1e53aa86cbf387a 100644 |
| --- a/src/gpu/gl/builders/GrGLProgramBuilder.h |
| +++ b/src/gpu/gl/builders/GrGLProgramBuilder.h |
| @@ -12,35 +12,14 @@ |
| #include "gl/GrGLProgramDataManager.h" |
| #include "gl/GrGLUniformHandler.h" |
| #include "gl/GrGLVaryingHandler.h" |
| -#include "glsl/GrGLSLPrimitiveProcessor.h" |
| #include "glsl/GrGLSLProgramBuilder.h" |
| #include "glsl/GrGLSLProgramDataManager.h" |
| -#include "glsl/GrGLSLTextureSampler.h" |
| -#include "glsl/GrGLSLXferProcessor.h" |
| class GrFragmentProcessor; |
| class GrGLContextInfo; |
| class GrGLSLShaderBuilder; |
| class GrGLSLCaps; |
| -/** |
| - * The below struct represent processors installed in programs. |
| - */ |
| -template <class Proc> |
|
egdaniel
2016/01/13 17:01:58
Glad to kill this whole crazy setup
|
| -struct GrGLInstalledProc { |
| - SkDEBUGCODE(int fSamplersIdx;) |
| - SkAutoTDelete<Proc> fGLProc; |
| -}; |
| - |
| -typedef GrGLInstalledProc<GrGLSLPrimitiveProcessor> GrGLInstalledGeoProc; |
| -typedef GrGLInstalledProc<GrGLSLXferProcessor> GrGLInstalledXferProc; |
| -typedef GrGLInstalledProc<GrGLSLFragmentProcessor> GrGLInstalledFragProc; |
| - |
| -struct GrGLInstalledFragProcs : public SkRefCnt { |
| - virtual ~GrGLInstalledFragProcs(); |
| - SkSTArray<8, GrGLInstalledFragProc*, true> fProcs; |
| -}; |
| - |
| /* |
| * Please note - no diamond problems because of virtual inheritance. Also, both base classes |
|
bsalomon
2016/01/13 17:49:19
Can you remove/modify this comment? I don't think
egdaniel
2016/01/13 19:59:49
Done.
|
| * are pure virtual with no data members. This is the base class for program building. |
| @@ -59,48 +38,17 @@ public: |
| */ |
| static GrGLProgram* CreateProgram(const DrawArgs&, GrGLGpu*); |
| + const GrCaps* caps() const override; |
| const GrGLSLCaps* glslCaps() const override; |
| + |
|
joshualitt
2016/01/13 17:58:24
\n
egdaniel
2016/01/13 19:59:49
Done.
|
| GrGLGpu* gpu() const { return fGpu; } |
| private: |
| GrGLProgramBuilder(GrGLGpu*, const DrawArgs&); |
| - // Generates a possibly mangled name for a stage variable and writes it to the fragment shader. |
| - // If GrGLSLExpr4 has a valid name then it will use that instead |
| - void nameExpression(GrGLSLExpr4*, const char* baseName); |
| - bool emitAndInstallProcs(GrGLSLExpr4* inputColor, GrGLSLExpr4* inputCoverage); |
| - void emitAndInstallFragProcs(int procOffset, int numProcs, GrGLSLExpr4* inOut); |
| - void emitAndInstallProc(const GrFragmentProcessor&, |
| - int index, |
| - const GrGLSLExpr4& input, |
| - GrGLSLExpr4* output); |
| - |
| - void emitAndInstallProc(const GrPrimitiveProcessor&, |
| - GrGLSLExpr4* outputColor, |
| - GrGLSLExpr4* outputCoverage); |
| - |
| - // these emit functions help to keep the createAndEmitProcessors template general |
| - void emitAndInstallProc(const GrFragmentProcessor&, |
| - int index, |
| - const char* outColor, |
| - const char* inColor); |
| - void emitAndInstallProc(const GrPrimitiveProcessor&, |
| - const char* outColor, |
| - const char* outCoverage); |
| - void emitAndInstallXferProc(const GrXferProcessor&, |
| - const GrGLSLExpr4& colorIn, |
| - const GrGLSLExpr4& coverageIn, |
| - bool ignoresCoverage); |
| - void emitFSOutputSwizzle(bool hasSecondaryOutput); |
| - |
| - void verify(const GrPrimitiveProcessor&); |
| - void verify(const GrXferProcessor&); |
| - void verify(const GrFragmentProcessor&); |
| - template <class Proc> |
| void emitSamplers(const GrProcessor&, |
| - GrGLSLTextureSampler::TextureSamplerArray* outSamplers, |
| - GrGLInstalledProc<Proc>*); |
| + GrGLSLTextureSampler::TextureSamplerArray* outSamplers) override; |
| bool compileAndAttachShaders(GrGLSLShaderBuilder& shader, |
| GrGLuint programId, |
| @@ -120,35 +68,8 @@ private: |
| const GrGLSLUniformHandler* uniformHandler() const override { return &fUniformHandler; } |
| GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; } |
| - // reset is called by program creator between each processor's emit code. It increments the |
| - // stage offset for variable name mangling, and also ensures verfication variables in the |
| - // fragment shader are cleared. |
| - void reset() { |
| - this->addStage(); |
| - fFS.reset(); |
| - } |
| - void addStage() { fStageIndex++; } |
| - |
| - class AutoStageAdvance { |
| - public: |
| - AutoStageAdvance(GrGLProgramBuilder* pb) |
| - : fPB(pb) { |
| - fPB->reset(); |
| - // Each output to the fragment processor gets its own code section |
| - fPB->fFS.nextStage(); |
| - } |
| - ~AutoStageAdvance() {} |
| - private: |
| - GrGLProgramBuilder* fPB; |
| - }; |
| - |
| - GrGLInstalledGeoProc* fGeometryProcessor; |
| - GrGLInstalledXferProc* fXferProcessor; |
| - SkAutoTUnref<GrGLInstalledFragProcs> fFragmentProcessors; |
| GrGLGpu* fGpu; |
| - GrGLSLPrimitiveProcessor::TransformsIn fCoordTransforms; |
| - GrGLSLPrimitiveProcessor::TransformsOut fOutCoords; |
| typedef GrGLSLUniformHandler::UniformHandle UniformHandle; |
| SkTArray<UniformHandle> fSamplerUniforms; |