Chromium Code Reviews| 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 |