Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / bench / RecordingBench.cpp
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
13 static const int kTileSize = 256;
14
15 RecordingBench::RecordingBench(const char* name, const SkPicture* pic, bool useBBH)
16     : fSrc(SkRef(pic))
17     , fName(name)
18     , fUseBBH(useBBH) {}
19
20 const char* RecordingBench::onGetName() {
21     return fName.c_str();
22 }
23
24 bool RecordingBench::isSuitableFor(Backend backend) {
25     return backend == kNonRendering_Backend;
26 }
27
28 SkIPoint RecordingBench::onGetSize() {
29     return SkIPoint::Make(SkScalarCeilToInt(fSrc->cullRect().width()),
30                           SkScalarCeilToInt(fSrc->cullRect().height()));
31 }
32
33 void 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 }