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 |