aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/SkGpuDevice.cpp
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-05-07 13:41:07 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-05-07 13:41:07 -0700
commitc92c129ff85b05a714bd1bf921c02d5e14651f8b (patch)
treeea2f915b36a5f6abb746827a4a6f650d5ff13310 /src/gpu/SkGpuDevice.cpp
parent2fbd4068bde6a9fb50341c0bdfbb8bf18b70d015 (diff)
Sketch splitting SkPicture into an interface and SkBigPicture.
Adds small pictures for drawRect(), drawTextBlob(), and drawPath(). These cover about 89% of draw calls from Blink SKPs, and about 25% of draw calls from our GMs. SkPicture handles: - serialization and deserialization - unique IDs Everything else is left to the subclasses: - playback(), cullRect() - hasBitmap(), hasText(), suitableForGPU(), etc. - LayerInfo / AccelData if applicable. The time to record a 1-op picture improves a good chunk (2 mallocs to 1), and the time to record a 0-op picture greatly improves (2 mallocs to none): picture_overhead_draw: 450ns -> 350ns picture_overhead_nodraw: 300ns -> 90ns BUG=skia: Review URL: https://codereview.chromium.org/1112523006
Diffstat (limited to 'src/gpu/SkGpuDevice.cpp')
-rw-r--r--src/gpu/SkGpuDevice.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 9518600e99..eee93bb0c7 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -2014,9 +2014,10 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture
return false;
}
- SkPicture::AccelData::Key key = SkLayerInfo::ComputeKey();
-
- const SkPicture::AccelData* data = mainPicture->EXPERIMENTAL_getAccelData(key);
+ const SkBigPicture::AccelData* data = NULL;
+ if (const SkBigPicture* bp = mainPicture->asSkBigPicture()) {
+ data = bp->accelData();
+ }
if (!data) {
return false;
}