Mark when effects and programs have vertex code
Adds a 'hasVertexCode' method to GrEffect and a 'fHasVertexCode' field
to GrGLProgramDesc::KeyHeader. Also adds a GrVertexEffect class that
effects have to inherit from in order to set the 'hasVertexCode' flag
and be able to emit vertex code, and updates the existing effects to
use it as needed.
R=bsalomon@google.com
Author: cdalton@nvidia.com
Review URL: https://codereview.chromium.org/23653059
git-svn-id: http://skia.googlecode.com/svn/trunk@11537 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
index 013c7ab..66ca053 100644
--- a/src/gpu/GrOvalRenderer.cpp
+++ b/src/gpu/GrOvalRenderer.cpp
@@ -19,6 +19,8 @@
#include "SkRRect.h"
#include "SkStrokeRec.h"
+#include "effects/GrVertexEffect.h"
+
SK_DEFINE_INST_COUNT(GrOvalRenderer)
namespace {
@@ -56,7 +58,7 @@
* specified as offset_x, offset_y (both from center point), outer radius and inner radius.
*/
-class CircleEdgeEffect : public GrEffect {
+class CircleEdgeEffect : public GrVertexEffect {
public:
static GrEffectRef* Create(bool stroke) {
GR_CREATE_STATIC_EFFECT(gCircleStrokeEdge, CircleEdgeEffect, (true));
@@ -134,7 +136,7 @@
private:
- CircleEdgeEffect(bool stroke) : GrEffect() {
+ CircleEdgeEffect(bool stroke) : GrVertexEffect() {
this->addVertexAttrib(kVec4f_GrSLType);
fStroke = stroke;
}
@@ -148,7 +150,7 @@
GR_DECLARE_EFFECT_TEST;
- typedef GrEffect INHERITED;
+ typedef GrVertexEffect INHERITED;
};
GR_DEFINE_EFFECT_TEST(CircleEdgeEffect);
@@ -170,7 +172,7 @@
* We are using an implicit function of x^2/a^2 + y^2/b^2 - 1 = 0.
*/
-class EllipseEdgeEffect : public GrEffect {
+class EllipseEdgeEffect : public GrVertexEffect {
public:
static GrEffectRef* Create(bool stroke) {
GR_CREATE_STATIC_EFFECT(gEllipseStrokeEdge, EllipseEdgeEffect, (true));
@@ -269,7 +271,7 @@
};
private:
- EllipseEdgeEffect(bool stroke) : GrEffect() {
+ EllipseEdgeEffect(bool stroke) : GrVertexEffect() {
this->addVertexAttrib(kVec2f_GrSLType);
this->addVertexAttrib(kVec4f_GrSLType);
fStroke = stroke;
@@ -284,7 +286,7 @@
GR_DECLARE_EFFECT_TEST;
- typedef GrEffect INHERITED;
+ typedef GrVertexEffect INHERITED;
};
GR_DEFINE_EFFECT_TEST(EllipseEdgeEffect);
@@ -307,7 +309,7 @@
* The result is device-independent and can be used with any affine matrix.
*/
-class DIEllipseEdgeEffect : public GrEffect {
+class DIEllipseEdgeEffect : public GrVertexEffect {
public:
enum Mode { kStroke = 0, kHairline, kFill };
@@ -430,7 +432,7 @@
};
private:
- DIEllipseEdgeEffect(Mode mode) : GrEffect() {
+ DIEllipseEdgeEffect(Mode mode) : GrVertexEffect() {
this->addVertexAttrib(kVec2f_GrSLType);
this->addVertexAttrib(kVec2f_GrSLType);
fMode = mode;
@@ -445,7 +447,7 @@
GR_DECLARE_EFFECT_TEST;
- typedef GrEffect INHERITED;
+ typedef GrVertexEffect INHERITED;
};
GR_DEFINE_EFFECT_TEST(DIEllipseEdgeEffect);