196638d1db4c710e6fb72c4c286547800a63fb3dfreed/* 296638d1db4c710e6fb72c4c286547800a63fb3dfreed * Copyright 2015 Google Inc. 396638d1db4c710e6fb72c4c286547800a63fb3dfreed * 496638d1db4c710e6fb72c4c286547800a63fb3dfreed * Use of this source code is governed by a BSD-style license that can be 596638d1db4c710e6fb72c4c286547800a63fb3dfreed * found in the LICENSE file. 696638d1db4c710e6fb72c4c286547800a63fb3dfreed */ 796638d1db4c710e6fb72c4c286547800a63fb3dfreed 896638d1db4c710e6fb72c4c286547800a63fb3dfreed#include "Benchmark.h" 996638d1db4c710e6fb72c4c286547800a63fb3dfreed#include "SkBitmap.h" 1096638d1db4c710e6fb72c4c286547800a63fb3dfreed#include "SkMipMap.h" 1196638d1db4c710e6fb72c4c286547800a63fb3dfreed 1296638d1db4c710e6fb72c4c286547800a63fb3dfreedclass MipMapBench: public Benchmark { 1396638d1db4c710e6fb72c4c286547800a63fb3dfreed SkBitmap fBitmap; 1496638d1db4c710e6fb72c4c286547800a63fb3dfreed 1596638d1db4c710e6fb72c4c286547800a63fb3dfreedpublic: 1696638d1db4c710e6fb72c4c286547800a63fb3dfreed MipMapBench() {} 1796638d1db4c710e6fb72c4c286547800a63fb3dfreed 1896638d1db4c710e6fb72c4c286547800a63fb3dfreedprotected: 1936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool isSuitableFor(Backend backend) override { 2096638d1db4c710e6fb72c4c286547800a63fb3dfreed return kNonRendering_Backend == backend; 2196638d1db4c710e6fb72c4c286547800a63fb3dfreed } 2296638d1db4c710e6fb72c4c286547800a63fb3dfreed 2336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const char* onGetName() override { return "mipmap_build"; } 2496638d1db4c710e6fb72c4c286547800a63fb3dfreed 2536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onPreDraw() override { 2696638d1db4c710e6fb72c4c286547800a63fb3dfreed fBitmap.allocN32Pixels(1000, 1000, true); 2796638d1db4c710e6fb72c4c286547800a63fb3dfreed fBitmap.eraseColor(SK_ColorWHITE); // so we don't read uninitialized memory 2896638d1db4c710e6fb72c4c286547800a63fb3dfreed } 2996638d1db4c710e6fb72c4c286547800a63fb3dfreed 3036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDraw(const int loops, SkCanvas*) override { 3196638d1db4c710e6fb72c4c286547800a63fb3dfreed for (int i = 0; i < loops; i++) { 3296638d1db4c710e6fb72c4c286547800a63fb3dfreed SkMipMap::Build(fBitmap, NULL)->unref(); 3396638d1db4c710e6fb72c4c286547800a63fb3dfreed } 3496638d1db4c710e6fb72c4c286547800a63fb3dfreed } 3596638d1db4c710e6fb72c4c286547800a63fb3dfreed 3696638d1db4c710e6fb72c4c286547800a63fb3dfreedprivate: 3796638d1db4c710e6fb72c4c286547800a63fb3dfreed typedef Benchmark INHERITED; 3896638d1db4c710e6fb72c4c286547800a63fb3dfreed}; 3996638d1db4c710e6fb72c4c286547800a63fb3dfreed 4096638d1db4c710e6fb72c4c286547800a63fb3dfreedDEF_BENCH( return new MipMapBench; ) 41