aboutsummaryrefslogtreecommitdiff
path: root/samplecode/SampleApp.cpp
diff options
context:
space:
mode:
authorreed <reed@google.com>2016-07-08 08:43:27 -0700
committerCommit bot <commit-bot@chromium.org>2016-07-08 08:43:28 -0700
commitbabc3de2ce7c2f7b32b1b6b9f36d2ac4a4d8dee1 (patch)
treee9cae65810720a7e06ad6655da10f16b37627338 /samplecode/SampleApp.cpp
parentbd2bbe4a1750166136c7729adb0b48ebd7132b74 (diff)
deferred canvas
tries to eliminate unneeded clipRects and concats (and their associated save/restores). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2120333002 Review-Url: https://codereview.chromium.org/2120333002
Diffstat (limited to 'samplecode/SampleApp.cpp')
-rw-r--r--samplecode/SampleApp.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index a1e42e3aac..ffa507bc17 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -804,6 +804,7 @@ SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev
fRequestGrabImage = false;
fTilingMode = kNo_Tiling;
fMeasureFPS = false;
+ fUseDeferredCanvas = false;
fLCDState = SkOSMenu::kMixedState;
fAAState = SkOSMenu::kMixedState;
fSubpixelState = SkOSMenu::kMixedState;
@@ -987,6 +988,9 @@ static void drawText(SkCanvas* canvas, SkString str, SkScalar left, SkScalar top
#define XCLIP_N 8
#define YCLIP_N 8
+#include "SkDeferredCanvas.h"
+#include "SkDumpCanvas.h"
+
void SampleWindow::draw(SkCanvas* canvas) {
gAnimTimer.updateTime();
@@ -1001,7 +1005,11 @@ void SampleWindow::draw(SkCanvas* canvas) {
SkSize tile = this->tileSize();
if (kNo_Tiling == fTilingMode) {
- this->INHERITED::draw(canvas); // no looping or surfaces needed
+ SkDebugfDumper dumper;
+ SkDumpCanvas dump(&dumper);
+ SkDeferredCanvas deferred(canvas);
+ SkCanvas* c = fUseDeferredCanvas ? &deferred : canvas;
+ this->INHERITED::draw(c); // no looping or surfaces needed
} else {
const SkScalar w = SkScalarCeilToScalar(tile.width());
const SkScalar h = SkScalarCeilToScalar(tile.height());
@@ -1667,6 +1675,10 @@ bool SampleWindow::onHandleChar(SkUnichar uni) {
case 'D':
toggleDistanceFieldFonts();
break;
+ case 'E':
+ fUseDeferredCanvas = !fUseDeferredCanvas;
+ this->inval(nullptr);
+ break;
case 'f':
// only
toggleFPS();
@@ -2020,6 +2032,9 @@ void SampleWindow::updateTitle() {
if (fUsePicture) {
title.prepend("<P> ");
}
+ if (fUseDeferredCanvas) {
+ title.prepend("<E> ");
+ }
title.prepend(trystate_str(fLCDState, "LCD ", "lcd "));
title.prepend(trystate_str(fAAState, "AA ", "aa "));