Index: src/gpu/gl/builders/GrGLProgramBuilder.h |
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.h b/src/gpu/gl/builders/GrGLProgramBuilder.h |
index 5805cfc146661923e6c8ce2adfe566b6a18e48db..b564dbb46cd2401a0caaaa48fa0107b89e9647cd 100644 |
--- a/src/gpu/gl/builders/GrGLProgramBuilder.h |
+++ b/src/gpu/gl/builders/GrGLProgramBuilder.h |
@@ -12,6 +12,7 @@ |
#include "GrGLGeometryShaderBuilder.h" |
#include "GrGLVertexShaderBuilder.h" |
#include "../GrGLProgramDataManager.h" |
+#include "../GrGLPathProgramDataManager.h" |
#include "../GrGLUniformHandle.h" |
#include "../GrGLPrimitiveProcessor.h" |
#include "../GrGLXferProcessor.h" |
@@ -39,6 +40,7 @@ public: |
virtual ~GrGLUniformBuilder() {} |
typedef GrGLProgramDataManager::UniformHandle UniformHandle; |
+ typedef GrGLPathProgramDataManager::SeparableVaryingHandle SeparableVaryingHandle; |
/** Add a uniform variable to the current program, that has visibility in one or more shaders. |
visibility is a bitfield of ShaderVisibility values indicating from which shaders the |
@@ -154,6 +156,12 @@ public: |
virtual void addPassThroughAttribute(const GrGeometryProcessor::Attribute*, |
const char* output) = 0; |
+ /** Creates a fragment shader varying that can be referred to. |
+ * Comparable to GrGLUniformBuilder::addUniform(). |
+ */ |
+ virtual SeparableVaryingHandle addSeparableVarying( |
+ const char* name, GrGLVertToFrag*, GrSLPrecision fsPrecision = kDefault_GrSLPrecision) = 0; |
+ |
// TODO rename getFragmentBuilder |
virtual GrGLFragmentBuilder* getFragmentShaderBuilder() = 0; |
virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0; |
@@ -259,6 +267,10 @@ public: |
void addPassThroughAttribute(const GrPrimitiveProcessor::Attribute*, |
const char* output) override; |
+ SeparableVaryingHandle addSeparableVarying( |
+ const char* name, |
+ GrGLVertToFrag*, |
+ GrSLPrecision fsPrecision = kDefault_GrSLPrecision) override; |
// Handles for program uniforms (other than per-effect uniforms) |
struct BuiltinUniformHandles { |
@@ -322,9 +334,9 @@ protected: |
GrGLInstalledProc<Proc>*); |
GrGLProgram* finalize(); |
- void bindUniformLocations(GrGLuint programID); |
+ void bindProgramResourceLocations(GrGLuint programID); |
bool checkLinkStatus(GrGLuint programID); |
- void resolveUniformLocations(GrGLuint programID); |
+ virtual void resolveProgramResourceLocations(GrGLuint programID); |
void cleanupProgram(GrGLuint programID, const SkTDArray<GrGLuint>& shaderIDs); |
void cleanupShaders(const SkTDArray<GrGLuint>& shaderIDs); |