1126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com/* 2126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com * Copyright 2013 Google Inc. 3126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com * 4126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com * Use of this source code is governed by a BSD-style license that can be 5126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com * found in the LICENSE file. 6126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com */ 7126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 9126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkBitmap.h" 10126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkCanvas.h" 11126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkColorPriv.h" 12126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkDraw.h" 13126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkMatrix.h" 14126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkPath.h" 15126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com#include "SkRasterClip.h" 16126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 17f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass DrawPathBench : public Benchmark { 18126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkPaint fPaint; 19126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkString fName; 20126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkPath fPath; 21126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkRasterClip fRC; 22126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkBitmap fBitmap; 23126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkMatrix fIdentity; 24126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com SkDraw fDraw; 25126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com bool fDrawCoverage; 26126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.compublic: 27126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com DrawPathBench(bool drawCoverage) : fDrawCoverage(drawCoverage) { 28126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fPaint.setAntiAlias(true); 29126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fName.printf("draw_coverage_%s", drawCoverage ? "true" : "false"); 30126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 31126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fPath.moveTo(0, 0); 32126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fPath.quadTo(500, 0, 500, 500); 33126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fPath.quadTo(250, 0, 0, 500); 34126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 356c22573edb234ad14df947278cfed010669a39a7reed fBitmap.allocPixels(SkImageInfo::MakeA8(500, 500)); 36126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 37126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fIdentity.setIdentity(); 38126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fRC.setRect(fPath.getBounds().round()); 39126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 40126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fDraw.fBitmap = &fBitmap; 41126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fDraw.fMatrix = &fIdentity; 42126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fDraw.fClip = &fRC.bwRgn(); 43126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fDraw.fRC = &fRC; 44126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } 45ab7442c8d733e0642d1cd80af23cdab43d77039eskia.committer@gmail.com 46126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.comprotected: 47126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com virtual const char* onGetName() SK_OVERRIDE { 48126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com return fName.c_str(); 49126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } 50ab7442c8d733e0642d1cd80af23cdab43d77039eskia.committer@gmail.com 513361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { 52126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com if (fDrawCoverage) { 533361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; ++i) { 54126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fDraw.drawPathCoverage(fPath, fPaint); 55126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } 56126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } else { 573361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; ++i) { 58126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com fDraw.drawPath(fPath, fPaint); 59126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } 60126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } 61126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com } 62ab7442c8d733e0642d1cd80af23cdab43d77039eskia.committer@gmail.com 63126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.comprivate: 64f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 65126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com}; 66126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 67126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com/////////////////////////////////////////////////////////////////////////////// 68126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.com 69126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.comDEF_BENCH( return new DrawPathBench(false) ) 70126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34reed@google.comDEF_BENCH( return new DrawPathBench(true) ) 71