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