Index: src/gpu/GrAARectRenderer.cpp |
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp |
index d19e26d76604a9f98bdbb91c492886865f3475c2..8db39243dd7c3c7b7342c54f38dcb7a3697b27d0 100644 |
--- a/src/gpu/GrAARectRenderer.cpp |
+++ b/src/gpu/GrAARectRenderer.cpp |
@@ -9,16 +9,21 @@ |
#include "GrAARectRenderer.h" |
#include "GrGpu.h" |
#include "gl/GrGLEffect.h" |
-#include "gl/GrGLVertexEffect.h" |
+#include "gl/GrGLGeometryProcessor.h" |
#include "GrTBackendEffectFactory.h" |
#include "SkColorPriv.h" |
-#include "effects/GrVertexEffect.h" |
+#include "effects/GrGeometryProcessor.h" |
/////////////////////////////////////////////////////////////////////////////// |
class GrGLAlignedRectEffect; |
+ |
+const GrShaderVar kAttrRect("aRect", |
+ kVec4f_GrSLType, |
+ GrShaderVar::kAttribute_TypeModifier); |
+ |
// Axis Aligned special case |
-class GrAlignedRectEffect : public GrVertexEffect { |
+class GrAlignedRectEffect : public GrGeometryProcessor { |
public: |
static GrEffect* Create() { |
GR_CREATE_STATIC_EFFECT(gAlignedRectEffect, GrAlignedRectEffect, ()); |
@@ -39,7 +44,7 @@ public: |
return GrTBackendEffectFactory<GrAlignedRectEffect>::getInstance(); |
} |
- class GLEffect : public GrGLVertexEffect { |
+ class GLEffect : public GrGLGeometryProcessor { |
public: |
GLEffect(const GrBackendEffectFactory& factory, const GrDrawEffect&) |
: INHERITED (factory) {} |
@@ -58,9 +63,7 @@ public: |
builder->addVarying(kVec4f_GrSLType, "Rect", &vsRectName, &fsRectName); |
GrGLVertexShaderBuilder* vsBuilder = builder->getVertexShaderBuilder(); |
- const SkString* attr0Name = |
- vsBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices()[0]); |
- vsBuilder->codeAppendf("\t%s = %s;\n", vsRectName, attr0Name->c_str()); |
+ vsBuilder->codeAppendf("\t%s = %s;\n", vsRectName, kAttrRect.c_str()); |
GrGLFragmentShaderBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
// TODO: compute all these offsets, spans, and scales in the VS |
@@ -96,20 +99,20 @@ public: |
virtual void setData(const GrGLProgramDataManager& pdman, const GrDrawEffect&) SK_OVERRIDE {} |
private: |
- typedef GrGLVertexEffect INHERITED; |
+ typedef GrGLGeometryProcessor INHERITED; |
}; |
private: |
- GrAlignedRectEffect() : GrVertexEffect() { |
- this->addVertexAttrib(kVec4f_GrSLType); |
+ GrAlignedRectEffect() : GrGeometryProcessor() { |
+ this->addVertexAttrib(kAttrRect); |
} |
virtual bool onIsEqual(const GrEffect&) const SK_OVERRIDE { return true; } |
GR_DECLARE_EFFECT_TEST; |
- typedef GrVertexEffect INHERITED; |
+ typedef GrGeometryProcessor INHERITED; |
}; |
@@ -137,7 +140,16 @@ class GrGLRectEffect; |
* The munged width and height are stored in a vec2 varying ("WidthHeight") |
* with the width in x and the height in y. |
*/ |
-class GrRectEffect : public GrVertexEffect { |
+ |
+const GrShaderVar kAttrRectEdge("aRectEdge", |
+ kVec4f_GrSLType, |
+ GrShaderVar::kAttribute_TypeModifier); |
+ |
+const GrShaderVar kAttrWidthHeight("aWidthHeight", |
+ kVec2f_GrSLType, |
+ GrShaderVar::kAttribute_TypeModifier); |
+ |
+class GrRectEffect : public GrGeometryProcessor { |
public: |
static GrEffect* Create() { |
GR_CREATE_STATIC_EFFECT(gRectEffect, GrRectEffect, ()); |
@@ -158,7 +170,7 @@ public: |
return GrTBackendEffectFactory<GrRectEffect>::getInstance(); |
} |
- class GLEffect : public GrGLVertexEffect { |
+ class GLEffect : public GrGLGeometryProcessor { |
public: |
GLEffect(const GrBackendEffectFactory& factory, const GrDrawEffect&) |
: INHERITED (factory) {} |
@@ -177,17 +189,13 @@ public: |
&vsRectEdgeName, &fsRectEdgeName); |
GrGLVertexShaderBuilder* vsBuilder = builder->getVertexShaderBuilder(); |
- const SkString* attr0Name = |
- vsBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices()[0]); |
- vsBuilder->codeAppendf("\t%s = %s;\n", vsRectEdgeName, attr0Name->c_str()); |
+ vsBuilder->codeAppendf("\t%s = %s;\n", vsRectEdgeName, kAttrRectEdge.c_str()); |
// setup the varying for width/2+.5 and height/2+.5 |
const char *vsWidthHeightName, *fsWidthHeightName; |
builder->addVarying(kVec2f_GrSLType, "WidthHeight", |
&vsWidthHeightName, &fsWidthHeightName); |
- const SkString* attr1Name = |
- vsBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices()[1]); |
- vsBuilder->codeAppendf("\t%s = %s;\n", vsWidthHeightName, attr1Name->c_str()); |
+ vsBuilder->codeAppendf("\t%s = %s;\n", vsWidthHeightName, kAttrWidthHeight.c_str()); |
GrGLFragmentShaderBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
// TODO: compute all these offsets, spans, and scales in the VS |
@@ -230,14 +238,14 @@ public: |
virtual void setData(const GrGLProgramDataManager& pdman, const GrDrawEffect&) SK_OVERRIDE {} |
private: |
- typedef GrGLVertexEffect INHERITED; |
+ typedef GrGLGeometryProcessor INHERITED; |
}; |
private: |
- GrRectEffect() : GrVertexEffect() { |
- this->addVertexAttrib(kVec4f_GrSLType); |
- this->addVertexAttrib(kVec2f_GrSLType); |
+ GrRectEffect() : GrGeometryProcessor() { |
+ this->addVertexAttrib(kAttrRectEdge); |
+ this->addVertexAttrib(kAttrWidthHeight); |
this->setWillReadFragmentPosition(); |
} |
@@ -245,7 +253,7 @@ private: |
GR_DECLARE_EFFECT_TEST; |
- typedef GrVertexEffect INHERITED; |
+ typedef GrGeometryProcessor INHERITED; |
}; |
@@ -646,9 +654,7 @@ void GrAARectRenderer::shaderFillAARect(GrGpu* gpu, |
RectVertex* verts = reinterpret_cast<RectVertex*>(geo.vertices()); |
GrEffect* effect = GrRectEffect::Create(); |
- static const int kRectAttrIndex = 1; |
- static const int kWidthIndex = 2; |
- drawState->setGeometryProcessor(effect, kRectAttrIndex, kWidthIndex)->unref(); |
+ drawState->setGeometryProcessor(effect)->unref(); |
for (int i = 0; i < 4; ++i) { |
verts[i].fCenter = center; |
@@ -696,8 +702,7 @@ void GrAARectRenderer::shaderFillAlignedAARect(GrGpu* gpu, |
AARectVertex* verts = reinterpret_cast<AARectVertex*>(geo.vertices()); |
GrEffect* effect = GrAlignedRectEffect::Create(); |
- static const int kOffsetIndex = 1; |
- drawState->setGeometryProcessor(effect, kOffsetIndex)->unref(); |
+ drawState->setGeometryProcessor(effect)->unref(); |
SkRect devRect; |
combinedMatrix.mapRect(&devRect, rect); |