Propagated AA flags through Ganesh's clip stack (in preparation for GL AA clipping)
http://codereview.appspot.com/6038051/
git-svn-id: http://skia.googlecode.com/svn/trunk@3685 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrClip.cpp b/src/gpu/GrClip.cpp
index a02d9f4..87d58c4 100644
--- a/src/gpu/GrClip.cpp
+++ b/src/gpu/GrClip.cpp
@@ -10,7 +10,8 @@
#include "GrClip.h"
-GrClip::GrClip() {
+GrClip::GrClip()
+ : fRequiresAA(false) {
fConservativeBounds.setEmpty();
fConservativeBoundsValid = true;
}
@@ -38,6 +39,7 @@
fList = src.fList;
fConservativeBounds = src.fConservativeBounds;
fConservativeBoundsValid = src.fConservativeBoundsValid;
+ fRequiresAA = src.fRequiresAA;
return *this;
}
@@ -45,6 +47,7 @@
fList.reset();
fConservativeBounds.setEmpty();
fConservativeBoundsValid = true;
+ fRequiresAA = false;
}
void GrClip::setFromRect(const GrRect& r) {
@@ -57,6 +60,7 @@
fList.back().fRect = r;
fList.back().fType = kRect_ClipType;
fList.back().fOp = kReplace_SetOp;
+ fList.back().fDoAA = false;
fConservativeBounds = r;
fConservativeBoundsValid = true;
}
@@ -72,6 +76,7 @@
fList.back().fRect.set(r);
fList.back().fType = kRect_ClipType;
fList.back().fOp = kReplace_SetOp;
+ fList.back().fDoAA = false;
fConservativeBounds.set(r);
fConservativeBoundsValid = true;
}
@@ -86,6 +91,7 @@
void GrClip::setFromIterator(GrClipIterator* iter, GrScalar tx, GrScalar ty,
const GrRect* conservativeBounds) {
fList.reset();
+ fRequiresAA = false;
int rectCount = 0;
@@ -97,6 +103,10 @@
Element& e = fList.push_back();
e.fType = iter->getType();
e.fOp = iter->getOp();
+ e.fDoAA = iter->getDoAA();
+ if (e.fDoAA) {
+ fRequiresAA = true;
+ }
// iterators should not emit replace
GrAssert(kReplace_SetOp != e.fOp);
switch (e.fType) {
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index ba98e06..c832b20 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -181,6 +181,10 @@
return skToGrOps[fCurr->fOp];
}
+bool SkGrClipIterator::getDoAA() const {
+ return fCurr->fDoAA;
+}
+
GrPathFill SkGrClipIterator::getPathFill() const {
switch (fCurr->fPath->getFillType()) {
case SkPath::kWinding_FillType: