1/* 2 * Copyright 2015 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 "bench/Benchmark.h" 9#include "include/core/SkCanvas.h" 10#include "include/core/SkPictureRecorder.h" 11#include "include/core/SkRRect.h" 12 13class ClipOverheadRecordingBench : public Benchmark { 14public: 15 ClipOverheadRecordingBench() {} 16 17private: 18 const char* onGetName() override { return "clip_overhead_recording"; } 19 bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } 20 21 void onDraw(int loops, SkCanvas*) override { 22 SkPictureRecorder rec; 23 24 for (int loop = 0; loop < loops; loop++) { 25 SkCanvas* canvas = rec.beginRecording({0,0, 2000,3000}); 26 27 SkPaint paint; 28 SkRRect rrect; 29 rrect.setOval({0, 0, 1000, 1000}); 30 for (int i = 0; i < 1000; i++) { 31 canvas->save(); 32 canvas->translate(10, 10); 33 canvas->clipRect({10,10, 1000, 1000}); 34 canvas->drawRRect(rrect, paint); 35 canvas->restore(); 36 } 37 38 (void)rec.finishRecordingAsPicture(); 39 } 40 } 41}; 42DEF_BENCH( return new ClipOverheadRecordingBench; ) 43