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 973ae5e07820a1e24cb228980983f4d0500d8c44..f6c6fec502a5fd09aa336bf2851154685bb59b03 100644 |
| --- a/src/gpu/gl/builders/GrGLProgramBuilder.h |
| +++ b/src/gpu/gl/builders/GrGLProgramBuilder.h |
| @@ -14,6 +14,7 @@ |
| #include "../GrGLProgramDataManager.h" |
| #include "../GrGLUniformHandle.h" |
| #include "../GrGLGeometryProcessor.h" |
| +#include "../GrGLXferProcessor.h" |
| #include "../../GrOptDrawState.h" |
| #include "../../GrPendingFragmentStage.h" |
| @@ -105,6 +106,7 @@ private: |
| friend class GrGLVertexBuilder; |
| friend class GrGLGeometryBuilder; |
| + friend class GrGLXferBuilder; |
| friend class GrGLFragmentShaderBuilder; |
| }; |
| @@ -164,8 +166,18 @@ public: |
| */ |
| }; |
| +/* a specializations for XPs. Lets the user add uniforms and FS code */ |
| +class GrGLXPBuilder : public virtual GrGLUniformBuilder { |
| +public: |
| + virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() = 0; |
| + |
| + /* |
| + * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE |
| + */ |
| +}; |
| struct GrGLInstalledProc; |
| struct GrGLInstalledGeoProc; |
| +struct GrGLInstalledXferProc; |
| struct GrGLInstalledFragProc; |
| struct GrGLInstalledFragProcs; |
| @@ -177,7 +189,8 @@ struct GrGLInstalledFragProcs; |
| * respective builders |
| */ |
| class GrGLProgramBuilder : public GrGLGPBuilder, |
| - public GrGLFPBuilder { |
| + public GrGLFPBuilder, |
| + public GrGLXPBuilder { |
| public: |
| /** Generates a shader program. |
| * |
| @@ -282,8 +295,12 @@ protected: |
| void emitAndInstallProc(const GrGeometryProcessor&, |
| const char* outColor, |
| const char* outCoverage); |
| + void emitAndInstallXferProc(const GrXferProcessor&, |
| + const GrGLSLExpr4& colorIn, |
| + const GrGLSLExpr4& coverageIn); |
| void verify(const GrGeometryProcessor&); |
| + void verify(const GrXferProcessor&); |
| void verify(const GrFragmentProcessor&); |
| void emitSamplers(const GrProcessor&, |
| GrGLProcessor::TextureSamplerArray* outSamplers, |
| @@ -363,8 +380,10 @@ protected: |
| int fStageIndex; |
| GrGLInstalledGeoProc* fGeometryProcessor; |
| + GrGLInstalledXferProc* fXferProcessor; |
| SkAutoTUnref<GrGLInstalledFragProcs> fFragmentProcessors; |
| + |
|
joshualitt
2014/12/08 19:46:41
extra newline
egdaniel
2014/12/09 21:10:46
Done.
|
| const GrOptDrawState& fOptState; |
| const GrProgramDesc& fDesc; |
| GrGpuGL* fGpu; |
| @@ -396,6 +415,11 @@ struct GrGLInstalledGeoProc : public GrGLInstalledProc { |
| SkAutoTDelete<GrGLGeometryProcessor> fGLProc; |
| }; |
| +struct GrGLInstalledXferProc : public GrGLInstalledProc { |
| + SkAutoTDelete<GrGLXferProcessor> fGLProc; |
| +}; |
| + |
| + |
|
joshualitt
2014/12/08 19:46:41
extra newline
egdaniel
2014/12/09 21:10:46
Done.
|
| struct GrGLInstalledFragProc : public GrGLInstalledProc { |
| GrGLInstalledFragProc() : fGLProc(NULL) {} |
| class ShaderVarHandle { |