1/* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "RecordingBench.h" 9 10#include "SkBBHFactory.h" 11#include "SkPictureRecorder.h" 12 13static const int kTileSize = 256; 14 15RecordingBench::RecordingBench(const char* name, const SkPicture* pic, bool useBBH) 16 : fSrc(SkRef(pic)) 17 , fName(name) 18 , fUseBBH(useBBH) {} 19 20const char* RecordingBench::onGetName() { 21 return fName.c_str(); 22} 23 24bool RecordingBench::isSuitableFor(Backend backend) { 25 return backend == kNonRendering_Backend; 26} 27 28SkIPoint RecordingBench::onGetSize() { 29 return SkIPoint::Make(SkScalarCeilToInt(fSrc->cullRect().width()), 30 SkScalarCeilToInt(fSrc->cullRect().height())); 31} 32 33void RecordingBench::onDraw(const int loops, SkCanvas*) { 34 SkTileGridFactory::TileGridInfo info; 35 info.fTileInterval.set(kTileSize, kTileSize); 36 info.fMargin.setEmpty(); 37 info.fOffset.setZero(); 38 SkTileGridFactory factory(info); 39 40 const SkScalar w = fSrc->cullRect().width(), 41 h = fSrc->cullRect().height(); 42 43 for (int i = 0; i < loops; i++) { 44 SkPictureRecorder recorder; 45 fSrc->playback(recorder.beginRecording(w, h, fUseBBH ? &factory : NULL)); 46 SkDELETE(recorder.endRecording()); 47 } 48} 49