blob: ee626bc52cdde3ff5a62478fc7f5bebdb01dc536 [file] [log] [blame]
mtkleinfd731ce2014-09-10 12:19:30 -07001/*
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}