Created
November 2, 2016 23:57
-
-
Save homm/6e048cb0dad135b6db63b924458730e8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright 2013 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 "SkBlurMask.h" | |
#include "SkCanvas.h" | |
#include "SkPaint.h" | |
#include "SkRandom.h" | |
#include "SkShader.h" | |
#include "SkString.h" | |
#include "SkBitmapScaler.h" | |
class PixmapScalerBench: public Benchmark { | |
SkBitmapScaler::ResizeMethod fMethod; | |
SkString fName; | |
SkBitmap fSrc; | |
int fWidth; | |
int fHeight; | |
public: | |
PixmapScalerBench(SkBitmapScaler::ResizeMethod method, int width, int height, const char suffix[]) : | |
fMethod(method) | |
{ | |
fName.printf("pixmapscaler %dx%d %s", width, height, suffix); | |
fWidth = width; | |
fHeight = height; | |
} | |
protected: | |
const char* onGetName() override { | |
return fName.c_str(); | |
} | |
SkIPoint onGetSize() override { return{ 100, 100 }; } | |
bool isSuitableFor(Backend backend) override { | |
return backend == kNonRendering_Backend; | |
} | |
void onDelayedSetup() override { | |
fSrc.allocN32Pixels(2560, 1600); | |
fSrc.eraseColor(SK_ColorWHITE); | |
} | |
void onDraw(int loops, SkCanvas*) override { | |
SkPixmap src, dst; | |
SkBitmap fDst; | |
fSrc.peekPixels(&src); | |
fDst.allocN32Pixels(fWidth, fHeight); | |
fDst.peekPixels(&dst); | |
for (int i = 0; i < loops; i++) { | |
SkBitmapScaler::Resize(dst, src, fMethod); | |
} | |
} | |
private: | |
typedef Benchmark INHERITED; | |
}; | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_LANCZOS3, 5478, 3424, "6lzs"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_MITCHELL, 5478, 3424, "4bic"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_TRIANGLE, 5478, 3424, "2bil"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_LANCZOS3, 2048, 1280, "6lzs"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_MITCHELL, 2048, 1280, "4bic"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_TRIANGLE, 2048, 1280, "2bil"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_LANCZOS3, 320, 200, "6lzs"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_MITCHELL, 320, 200, "4bic"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_TRIANGLE, 320, 200, "2bil"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_LANCZOS3, 26, 16, "6lzs"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_MITCHELL, 26, 16, "4bic"); ) | |
DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_TRIANGLE, 26, 16, "2bil"); ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment