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