From 9cdd2abc30520d6f425afbc2d7bd7b15f8b11ba1 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Fri, 21 Oct 2016 10:43:36 -0400 Subject: add pipe to nanobench BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3801 Change-Id: Ia0b90b1e2947a7b9ae7cb340ef5cd5b3251bbd23 Reviewed-on: https://skia-review.googlesource.com/3801 Reviewed-by: Mike Reed Commit-Queue: Mike Reed --- bench/RecordingBench.cpp | 53 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 14 deletions(-) (limited to 'bench/RecordingBench.cpp') diff --git a/bench/RecordingBench.cpp b/bench/RecordingBench.cpp index d8034ce5d5..69be911467 100644 --- a/bench/RecordingBench.cpp +++ b/bench/RecordingBench.cpp @@ -11,37 +11,42 @@ #include "SkLiteRecorder.h" #include "SkPictureRecorder.h" -RecordingBench::RecordingBench(const char* name, const SkPicture* pic, bool useBBH, bool lite) - : fName(name) - , fUseBBH(useBBH) { +PictureCentricBench::PictureCentricBench(const char* name, const SkPicture* pic) : fName(name) { // Flatten the source picture in case it's trivially nested (useless for timing). SkPictureRecorder rec; pic->playback(rec.beginRecording(pic->cullRect(), nullptr, SkPictureRecorder::kPlaybackDrawPicture_RecordFlag)); fSrc = rec.finishRecordingAsPicture(); - - // If we're recording into an SkLiteDL, also record _from_ one. - if (lite) { - fDL = SkLiteDL::New(pic->cullRect()); - SkLiteRecorder r; - r.reset(fDL.get()); - fSrc->playback(&r); - } } -const char* RecordingBench::onGetName() { +const char* PictureCentricBench::onGetName() { return fName.c_str(); } -bool RecordingBench::isSuitableFor(Backend backend) { +bool PictureCentricBench::isSuitableFor(Backend backend) { return backend == kNonRendering_Backend; } -SkIPoint RecordingBench::onGetSize() { +SkIPoint PictureCentricBench::onGetSize() { return SkIPoint::Make(SkScalarCeilToInt(fSrc->cullRect().width()), SkScalarCeilToInt(fSrc->cullRect().height())); } +/////////////////////////////////////////////////////////////////////////////////////////////////// + +RecordingBench::RecordingBench(const char* name, const SkPicture* pic, bool useBBH, bool lite) + : INHERITED(name, pic) + , fUseBBH(useBBH) +{ + // If we're recording into an SkLiteDL, also record _from_ one. + if (lite) { + fDL = SkLiteDL::New(fSrc->cullRect()); + SkLiteRecorder r; + r.reset(fDL.get()); + fSrc->playback(&r); + } +} + void RecordingBench::onDraw(int loops, SkCanvas*) { if (fDL) { SkLiteRecorder rec; @@ -61,3 +66,23 @@ void RecordingBench::onDraw(int loops, SkCanvas*) { } } } + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +#include "SkPipe.h" +#include "SkStream.h" + +PipingBench::PipingBench(const char* name, const SkPicture* pic) : INHERITED(name, pic) { + fName.prepend("pipe_"); +} + +void PipingBench::onDraw(int loops, SkCanvas*) { + SkDynamicMemoryWStream stream; + SkPipeSerializer serializer; + + while (loops --> 0) { + fSrc->playback(serializer.beginWrite(fSrc->cullRect(), &stream)); + serializer.endWrite(); + stream.reset(); + } +} -- cgit v1.2.3