12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- * Copyright 2014 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "bench/RecordingBench.h"
- #include "include/core/SkBBHFactory.h"
- #include "include/core/SkPictureRecorder.h"
- 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();
- }
- const char* PictureCentricBench::onGetName() {
- return fName.c_str();
- }
- bool PictureCentricBench::isSuitableFor(Backend backend) {
- return backend == kNonRendering_Backend;
- }
- SkIPoint PictureCentricBench::onGetSize() {
- return SkIPoint::Make(SkScalarCeilToInt(fSrc->cullRect().width()),
- SkScalarCeilToInt(fSrc->cullRect().height()));
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- RecordingBench::RecordingBench(const char* name, const SkPicture* pic, bool useBBH)
- : INHERITED(name, pic)
- , fUseBBH(useBBH)
- {}
- void RecordingBench::onDraw(int loops, SkCanvas*) {
- SkRTreeFactory factory;
- SkPictureRecorder recorder;
- while (loops --> 0) {
- fSrc->playback(recorder.beginRecording(fSrc->cullRect(), fUseBBH ? &factory : nullptr));
- (void)recorder.finishRecordingAsPicture();
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- #include "include/core/SkSerialProcs.h"
- DeserializePictureBench::DeserializePictureBench(const char* name, sk_sp<SkData> data)
- : fName(name)
- , fEncodedPicture(std::move(data))
- {}
- const char* DeserializePictureBench::onGetName() {
- return fName.c_str();
- }
- bool DeserializePictureBench::isSuitableFor(Backend backend) {
- return backend == kNonRendering_Backend;
- }
- SkIPoint DeserializePictureBench::onGetSize() {
- return SkIPoint::Make(128, 128);
- }
- void DeserializePictureBench::onDraw(int loops, SkCanvas*) {
- for (int i = 0; i < loops; ++i) {
- SkPicture::MakeFromData(fEncodedPicture.get());
- }
- }
|