Index: src/core/SkPicture.cpp |
=================================================================== |
--- src/core/SkPicture.cpp (revision 14349) |
+++ src/core/SkPicture.cpp (working copy) |
@@ -122,17 +122,18 @@ |
/////////////////////////////////////////////////////////////////////////////// |
-SkPicture::SkPicture() { |
+SkPicture::SkPicture() |
+ : fAccelData(NULL) { |
this->needsNewGenID(); |
fRecord = NULL; |
fPlayback = NULL; |
fWidth = fHeight = 0; |
- fAccelData = NULL; |
} |
SkPicture::SkPicture(const SkPicture& src) |
: INHERITED() |
- , fAccelData(NULL) { |
+ , fAccelData(NULL) |
+ , fContentInfo(src.fContentInfo) { |
this->needsNewGenID(); |
fWidth = src.fWidth; |
fHeight = src.fHeight; |
@@ -207,6 +208,7 @@ |
SkTSwap(fWidth, other.fWidth); |
SkTSwap(fHeight, other.fHeight); |
fPathHeap.swap(&other.fPathHeap); |
+ fContentInfo.swap(&other.fContentInfo); |
} |
SkPicture* SkPicture::clone() const { |
@@ -228,6 +230,7 @@ |
clone->fHeight = fHeight; |
SkSafeSetNull(clone->fRecord); |
SkDELETE(clone->fPlayback); |
+ clone->fContentInfo.set(fContentInfo); |
/* We want to copy the src's playback. However, if that hasn't been built |
yet, we need to fake a call to endRecording() without actually calling |
@@ -271,6 +274,7 @@ |
} |
SkSafeUnref(fAccelData); |
SkSafeSetNull(fRecord); |
+ fContentInfo.reset(); |
this->needsNewGenID(); |
@@ -305,6 +309,7 @@ |
SkSafeUnref(fAccelData); |
SkSafeSetNull(fRecord); |
SkASSERT(NULL == fPathHeap); |
+ fContentInfo.reset(); |
this->needsNewGenID(); |
@@ -602,8 +607,12 @@ |
#if SK_SUPPORT_GPU |
bool SkPicture::suitableForGpuRasterization(GrContext* context) const { |
- // Stub for now; never veto GPu rasterization. |
- return true; |
+ // TODO: the heuristic used here needs to be refined |
+ static const int kNumPaintWithPathEffectUsesTol = 1; |
+ static const int kNumAAConcavePaths = 1; |
bsalomon
2014/04/24 19:57:37
Can we start with this one a little larger? Maybe
alokp
2014/04/24 20:55:21
Would you have MSAA info in GrContext? I will need
|
+ |
+ return this->numPaintWithPathEffectUses() < kNumPaintWithPathEffectUsesTol && |
+ this->numAAConcavePaths() < kNumAAConcavePaths; |
} |
#endif |