add bench for building mipmaps
authorreed <reed@google.com>
Mon, 26 Jan 2015 20:28:54 +0000 (12:28 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 26 Jan 2015 20:28:54 +0000 (12:28 -0800)
BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/873293003

bench/MipMapBench.cpp [new file with mode: 0644]
gyp/bench.gypi

diff --git a/bench/MipMapBench.cpp b/bench/MipMapBench.cpp
new file mode 100644 (file)
index 0000000..cb4658a
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Benchmark.h"
+#include "SkBitmap.h"
+#include "SkMipMap.h"
+
+class MipMapBench: public Benchmark {
+    SkBitmap fBitmap;
+
+public:
+    MipMapBench() {}
+
+protected:
+    bool isSuitableFor(Backend backend) SK_OVERRIDE {
+        return kNonRendering_Backend == backend;
+    }
+
+    const char* onGetName() SK_OVERRIDE { return "mipmap_build"; }
+
+    void onPreDraw() SK_OVERRIDE {
+        fBitmap.allocN32Pixels(1000, 1000, true);
+        fBitmap.eraseColor(SK_ColorWHITE);  // so we don't read uninitialized memory
+    }
+
+    void onDraw(const int loops, SkCanvas*) SK_OVERRIDE {
+        for (int i = 0; i < loops; i++) {
+            SkMipMap::Build(fBitmap, NULL)->unref();
+        }
+    }
+
+private:
+    typedef Benchmark INHERITED;
+};
+
+DEF_BENCH( return new MipMapBench; )
index ce483e9..f98e1b9 100644 (file)
@@ -72,6 +72,7 @@
     '../bench/MemoryBench.cpp',
     '../bench/MemsetBench.cpp',
     '../bench/MergeBench.cpp',
+    '../bench/MipMapBench.cpp',
     '../bench/MorphologyBench.cpp',
     '../bench/MutexBench.cpp',
     '../bench/PatchBench.cpp',