Index: src/gpu/gl/builders/GrGLFragmentShaderBuilder.h |
diff --git a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h |
index 7afc76c711b5d2bdcb1775247a10a5d0facd8924..1ab7af6b1b4e6606fdbd217e79498306f39bdb26 100644 |
--- a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h |
+++ b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h |
@@ -66,6 +66,11 @@ public: |
no effect advertised that it will read the destination. */ |
virtual const char* dstColor() = 0; |
+ /** Adds any necessary layout qualifiers in order to legalize the supplied blend equation with |
+ this shader. It is only legal to call this method with an advanced blend equation, and only |
+ if these equations are supported. */ |
+ virtual void enableAdvancedBlendEquationIfNeeded(GrBlendEquation) = 0; |
+ |
private: |
typedef GrGLFragmentBuilder INHERITED; |
}; |
@@ -95,6 +100,8 @@ public: |
const char* fragmentPosition() override; |
const char* dstColor() override; |
+ void enableAdvancedBlendEquationIfNeeded(GrBlendEquation) override; |
+ |
private: |
// Private public interface, used by GrGLProgramBuilder to build a fragment shader |
void enableCustomOutput(); |
@@ -123,7 +130,8 @@ private: |
*/ |
enum GLSLPrivateFeature { |
kFragCoordConventions_GLSLPrivateFeature = kLastGLSLFeature + 1, |
- kLastGLSLPrivateFeature = kFragCoordConventions_GLSLPrivateFeature |
+ kBlendEquationAdvanced_GLSLPrivateFeature, |
+ kLastGLSLPrivateFeature = kBlendEquationAdvanced_GLSLPrivateFeature |
}; |
// Interpretation of DstReadKey when generating code |