Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1584)

Unified Diff: tools/bench_playback.cpp

Issue 290653004: Remove SkRecorder's kWriteOnly mode. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/RecorderTest.cpp ('k') | tools/dump_record.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/bench_playback.cpp
diff --git a/tools/bench_playback.cpp b/tools/bench_playback.cpp
index 4e719959323552b8401d25861ce346f6fdf8b2ce..435dd77fb980237284b4b8f6e95a9eb3bb0de063 100644
--- a/tools/bench_playback.cpp
+++ b/tools/bench_playback.cpp
@@ -12,9 +12,7 @@
#include "SkOSFile.h"
#include "SkPicture.h"
#include "SkPictureRecorder.h"
-#include "SkRecordDraw.h"
-#include "SkRecordOpts.h"
-#include "SkRecorder.h"
+#include "SkRecording.h"
#include "SkStream.h"
#include "SkString.h"
@@ -33,14 +31,28 @@ static double scale_time(double ms) {
return ms;
}
-static void bench(SkPMColor* scratch, SkPicture& src, const char* name) {
- // We don't use the public SkRecording interface here because we need kWriteOnly_Mode.
- // (We don't want SkPicturePlayback to be able to optimize playing into our SkRecord.)
- SkRecord record;
- SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, src.width(), src.height());
- src.draw(&recorder);
+static SkPicture* rerecord_with_tilegrid(SkPicture& src) {
+ SkTileGridFactory::TileGridInfo info;
+ info.fTileInterval.set(FLAGS_tile, FLAGS_tile);
+ info.fMargin.setEmpty();
+ info.fOffset.setZero();
+ SkTileGridFactory factory(info);
+
+ SkPictureRecorder recorder;
+ src.draw(recorder.beginRecording(src.width(), src.height(), &factory,
+ SkPicture::kUsePathBoundsForClip_RecordingFlag));
+ return recorder.endRecording();
+}
- SkRecordOptimize(&record);
+static EXPERIMENTAL::SkPlayback* rerecord_with_skr(SkPicture& src) {
+ EXPERIMENTAL::SkRecording recording(src.width(), src.height());
+ src.draw(recording.canvas());
+ return recording.releasePlayback();
+}
+
+static void bench(SkPMColor* scratch, SkPicture& src, const char* name) {
+ SkAutoTUnref<SkPicture> picture(rerecord_with_tilegrid(src));
+ SkAutoTDelete<EXPERIMENTAL::SkPlayback> record(rerecord_with_skr(src));
SkAutoTDelete<SkCanvas> canvas(SkCanvas::NewRasterDirectN32(src.width(),
src.height(),
@@ -52,9 +64,9 @@ static void bench(SkPMColor* scratch, SkPicture& src, const char* name) {
timer.start();
for (int i = 0; i < FLAGS_loops; i++) {
if (FLAGS_skr) {
- SkRecordDraw(record, canvas.get());
+ record->draw(canvas.get());
} else {
- src.draw(canvas.get());
+ picture->draw(canvas.get());
}
}
timer.end();
@@ -102,21 +114,7 @@ int tool_main(int argc, char** argv) {
continue;
}
- // Rerecord into a picture using a tile grid.
- SkTileGridFactory::TileGridInfo info;
- info.fTileInterval.set(FLAGS_tile, FLAGS_tile);
- info.fMargin.setEmpty();
- info.fOffset.setZero();
- SkTileGridFactory factory(info);
-
- SkPictureRecorder recorder;
- SkCanvas* canvas = recorder.beginRecording(src->width(), src->height(),
- &factory,
- SkPicture::kUsePathBoundsForClip_RecordingFlag);
- src->draw(canvas);
- SkAutoTUnref<SkPicture> replay(recorder.endRecording());
-
- bench(scratch.get(), *replay, filename.c_str());
+ bench(scratch.get(), *src, filename.c_str());
}
return failed ? 1 : 0;
}
« no previous file with comments | « tests/RecorderTest.cpp ('k') | tools/dump_record.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698