Home | History | Annotate | Download | only in bench
      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 }
     49