Fix for effect cache key.
Adds the additional shift needed to incorporate the attribKeyBits. Also simplifies the creation of the static globals for the edge effects.
Author: jvanverth@google.com
Reviewed By: bsalomon@google.com
Review URL: https://chromiumcodereview.appspot.com/13465019
git-svn-id: http://skia.googlecode.com/svn/trunk@8498 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/gpu/GrTBackendEffectFactory.h b/include/gpu/GrTBackendEffectFactory.h
index 8697f8e..813f54b 100644
--- a/include/gpu/GrTBackendEffectFactory.h
+++ b/include/gpu/GrTBackendEffectFactory.h
@@ -71,7 +71,7 @@
protected:
GrTBackendEffectFactory() {
- fEffectClassID = GenID() << (kEffectKeyBits + kTextureKeyBits) ;
+ fEffectClassID = GenID() << (kAttribKeyBits + kEffectKeyBits + kTextureKeyBits) ;
}
};
diff --git a/src/gpu/GrAAConvexPathRenderer.cpp b/src/gpu/GrAAConvexPathRenderer.cpp
index ca5addc..1ef991e 100644
--- a/src/gpu/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/GrAAConvexPathRenderer.cpp
@@ -451,11 +451,10 @@
static GrEffectRef* Create() {
// we go through this so we only have one copy of each effect
- static GrEffectRef* gQuadEdgeEffectRef =
- CreateEffectRef(AutoEffectUnref(SkNEW(QuadEdgeEffect)));
- static SkAutoTUnref<GrEffectRef> gUnref(gQuadEdgeEffectRef);
+ static SkAutoTUnref<GrEffectRef> gQuadEdgeEffectRef(
+ CreateEffectRef(AutoEffectUnref(SkNEW(QuadEdgeEffect))));
- gQuadEdgeEffectRef->ref();
+ gQuadEdgeEffectRef.get()->ref();
return gQuadEdgeEffectRef;
}
@@ -524,7 +523,7 @@
private:
typedef GrGLEffect INHERITED;
};
-
+
private:
QuadEdgeEffect() {
this->addVertexAttrib(kVec4f_GrSLType);
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp
index fdb6009..08a4111 100644
--- a/src/gpu/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/GrAAHairLinePathRenderer.cpp
@@ -509,11 +509,10 @@
static GrEffectRef* Create() {
// we go through this so we only have one copy of each effect
- static GrEffectRef* gHairQuadEdgeEffectRef =
- CreateEffectRef(AutoEffectUnref(SkNEW(HairQuadEdgeEffect)));
- static SkAutoTUnref<GrEffectRef> gUnref(gHairQuadEdgeEffectRef);
-
- gHairQuadEdgeEffectRef->ref();
+ static SkAutoTUnref<GrEffectRef> gHairQuadEdgeEffectRef(
+ CreateEffectRef(AutoEffectUnref(SkNEW(HairQuadEdgeEffect))));
+
+ gHairQuadEdgeEffectRef.get()->ref();
return gHairQuadEdgeEffectRef;
}
@@ -611,11 +610,10 @@
static GrEffectRef* Create() {
// we go through this so we only have one copy of each effect
- static GrEffectRef* gHairLineEdgeEffectRef =
- CreateEffectRef(AutoEffectUnref(SkNEW(HairLineEdgeEffect)));
- static SkAutoTUnref<GrEffectRef> gUnref(gHairLineEdgeEffectRef);
-
- gHairLineEdgeEffectRef->ref();
+ static SkAutoTUnref<GrEffectRef> gHairLineEdgeEffectRef(
+ CreateEffectRef(AutoEffectUnref(SkNEW(HairLineEdgeEffect))));
+
+ gHairLineEdgeEffectRef.get()->ref();
return gHairLineEdgeEffectRef;
}