| Index: src/gpu/gl/builders/GrGLFragmentShaderBuilder.h
|
| diff --git a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h
|
| index 39ca5e7dad6885fb1e8c504890b5e08ff539db67..16cc8cffe3c4c8c62597843df29c17535c24e264 100644
|
| --- a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h
|
| +++ b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.h
|
| @@ -10,19 +10,20 @@
|
|
|
| #include "GrGLShaderBuilder.h"
|
|
|
| -#include "gl/GrGLTypes.h"
|
| #include "glsl/GrGLSLProcessorTypes.h"
|
|
|
| class GrRenderTarget;
|
| -class GrGLVarying;
|
| +class GrGLSLVarying;
|
|
|
| /*
|
| * This base class encapsulates the functionality which the GP uses to build fragment shaders
|
| */
|
| class GrGLFragmentBuilder : public GrGLShaderBuilder {
|
| public:
|
| - GrGLFragmentBuilder(GrGLProgramBuilder* program)
|
| - : INHERITED(program) {
|
| + GrGLFragmentBuilder(GrGLSLProgramBuilder* program)
|
| + : INHERITED(program)
|
| + , fHasCustomColorOutput(false)
|
| + , fHasSecondaryOutput(false) {
|
| fSubstageIndices.push_back(0);
|
| }
|
| virtual ~GrGLFragmentBuilder() {}
|
| @@ -62,6 +63,13 @@ public:
|
|
|
| const SkString& getMangleString() const { return fMangleString; }
|
|
|
| + bool hasCustomColorOutput() const { return fHasCustomColorOutput; }
|
| + bool hasSecondaryOutput() const { return fHasSecondaryOutput; }
|
| +
|
| +protected:
|
| + bool fHasCustomColorOutput;
|
| + bool fHasSecondaryOutput;
|
| +
|
| private:
|
| /*
|
| * State that tracks which child proc in the proc tree is currently emitting code. This is
|
| @@ -95,7 +103,7 @@ private:
|
| */
|
| class GrGLXPFragmentBuilder : public GrGLFragmentBuilder {
|
| public:
|
| - GrGLXPFragmentBuilder(GrGLProgramBuilder* program) : INHERITED(program) {}
|
| + GrGLXPFragmentBuilder(GrGLSLProgramBuilder* program) : INHERITED(program) {}
|
|
|
| /** Returns the variable name that holds the color of the destination pixel. This may be nullptr if
|
| no effect advertised that it will read the destination. */
|
| @@ -120,7 +128,7 @@ public:
|
| the key is 0. */
|
| static FragPosKey KeyForFragmentPosition(const GrRenderTarget* dst);
|
|
|
| - GrGLFragmentShaderBuilder(GrGLProgramBuilder* program, uint8_t fragPosKey);
|
| + GrGLFragmentShaderBuilder(GrGLSLProgramBuilder* program, uint8_t fragPosKey);
|
|
|
| // true public interface, defined explicitly in the abstract interfaces above
|
| bool enableFeature(GLSLFeature) override;
|
| @@ -137,7 +145,6 @@ private:
|
| void enableSecondaryOutput();
|
| const char* getPrimaryColorOutputName() const;
|
| const char* getSecondaryColorOutputName() const;
|
| - void bindFragmentShaderLocations(GrGLuint programID);
|
|
|
| // As GLProcessors emit code, there are some conditions we need to verify. We use the below
|
| // state to track this. The reset call is called per processor emitted.
|
| @@ -148,10 +155,13 @@ private:
|
| fHasReadFragmentPosition = false;
|
| }
|
|
|
| + static const char* DeclaredColorOutputName() { return "fsColorOut"; }
|
| + static const char* DeclaredSecondaryColorOutputName() { return "fsSecondaryColorOut"; }
|
| +
|
| /*
|
| * An internal call for GrGLProgramBuilder to use to add varyings to the vertex shader
|
| */
|
| - void addVarying(GrGLVarying*, GrSLPrecision);
|
| + void addVarying(GrGLSLVarying*, GrSLPrecision);
|
|
|
| void onFinalize() override;
|
|
|
| @@ -174,8 +184,6 @@ private:
|
|
|
| static const char* kDstTextureColorName;
|
|
|
| - bool fHasCustomColorOutput;
|
| - bool fHasSecondaryOutput;
|
| bool fSetupFragPosition;
|
| bool fTopLeftFragPosRead;
|
| int fCustomColorOutputIndex;
|
|
|