| Index: src/gpu/gl/builders/GrGLVertexShaderBuilder.h
|
| diff --git a/src/gpu/gl/builders/GrGLVertexShaderBuilder.h b/src/gpu/gl/builders/GrGLVertexShaderBuilder.h
|
| index c93b3be6682c5252025a27233deb9ad3ea78f71b..0b85b84dfb6994642fff5152cbe42c3ce68b9c12 100644
|
| --- a/src/gpu/gl/builders/GrGLVertexShaderBuilder.h
|
| +++ b/src/gpu/gl/builders/GrGLVertexShaderBuilder.h
|
| @@ -7,26 +7,22 @@
|
|
|
| #ifndef GrGLVertexShader_DEFINED
|
| #define GrGLVertexShader_DEFINED
|
| +
|
| #include "GrGLShaderBuilder.h"
|
|
|
| class GrGLProgramBuilder;
|
|
|
| -class GrGLVertexShaderBuilder : public GrGLFullShaderBuilder {
|
| +// TODO we only actually ever need to return a GrGLShaderBuilder for this guy, none of the below
|
| +// functions need to be part of VertexShaderBuilder's public interface
|
| +class GrGLVertexBuilder : public GrGLShaderBuilder {
|
| public:
|
| - GrGLVertexShaderBuilder(GrGLFullProgramBuilder* program);
|
| -
|
| - /*
|
| - * this call is only for GrGLProgramEffects' internal use
|
| - */
|
| - void emitAttributes(const GrGeometryProcessor& gp);
|
| + GrGLVertexBuilder(GrGLProgramBuilder* program);
|
|
|
| /**
|
| * Are explicit local coordinates provided as input to the vertex shader.
|
| */
|
| bool hasExplicitLocalCoords() const { return (fLocalCoordsVar != fPositionVar); }
|
|
|
| - const SkString* getEffectAttributeName(int attributeIndex) const;
|
| -
|
| /** Returns a vertex attribute that represents the local coords in the VS. This may be the same
|
| as positionAttribute() or it may not be. It depends upon whether the rendering code
|
| specified explicit local coords or not in the GrDrawState. */
|
| @@ -37,28 +33,25 @@ public:
|
| */
|
| const GrGLShaderVar& positionAttribute() const { return *fPositionVar; }
|
|
|
| -private:
|
| /*
|
| - * Add attribute will push a new attribute onto the end. It will also assert if there is
|
| - * a duplicate attribute
|
| + * Internal call for GrGLProgramBuilder.addVarying
|
| */
|
| - bool addAttribute(const GrShaderVar& var);
|
| -
|
| - /*
|
| - * Internal call for GrGLFullProgramBuilder.addVarying
|
| - */
|
| - void addVarying(GrSLType type,
|
| - const char* name,
|
| - const char** vsOutName);
|
| + SkString* addVarying(GrSLType type, const char* name, const char** vsOutName);
|
|
|
| /*
|
| * private helpers for compilation by GrGLProgramBuilder
|
| */
|
| - void bindProgramLocations(GrGLuint programId);
|
| + void setupLocalCoords();
|
| + void transformGLToSkiaCoords();
|
| + void setupBuiltinVertexAttribute(const char* inName, GrGLSLExpr4* out);
|
| + void emitAttributes(const GrGeometryProcessor& gp);
|
| + void transformSkiaToGLCoords();
|
| + void bindVertexAttributes(GrGLuint programID);
|
| bool compileAndAttachShaders(GrGLuint programId, SkTDArray<GrGLuint>* shaderIds) const;
|
| - void emitCodeBeforeEffects(GrGLSLExpr4* color, GrGLSLExpr4* coverage);
|
| - void emitCodeAfterEffects();
|
|
|
| +private:
|
| + // an internal call which checks for uniquness of a var before adding it to the list of inputs
|
| + bool addAttribute(const GrShaderVar& var);
|
| struct AttributePair {
|
| void set(int index, const SkString& name) {
|
| fIndex = index; fName = name;
|
| @@ -71,9 +64,7 @@ private:
|
| GrGLShaderVar* fLocalCoordsVar;
|
| int fEffectAttribOffset;
|
|
|
| - friend class GrGLFullProgramBuilder;
|
| -
|
| - typedef GrGLFullShaderBuilder INHERITED;
|
| + typedef GrGLShaderBuilder INHERITED;
|
| };
|
|
|
| #endif
|
|
|