aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/ColorCodecBench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bench/ColorCodecBench.cpp')
-rw-r--r--bench/ColorCodecBench.cpp106
1 files changed, 0 insertions, 106 deletions
diff --git a/bench/ColorCodecBench.cpp b/bench/ColorCodecBench.cpp
deleted file mode 100644
index 37f1a6233d..0000000000
--- a/bench/ColorCodecBench.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "ColorCodecBench.h"
-#include "Resources.h"
-#include "SkCodec.h"
-#include "SkCodecPriv.h"
-#include "SkColorSpace_XYZ.h"
-#include "SkColorSpaceXform.h"
-#include "SkCommandLineFlags.h"
-
-DEFINE_bool(xform_only, false, "Only time the color xform, do not include the decode time");
-DEFINE_bool(srgb, false, "Convert to srgb dst space");
-DEFINE_bool(nonstd, false, "Convert to non-standard dst space");
-DEFINE_bool(half, false, "Convert to half floats");
-
-ColorCodecBench::ColorCodecBench(const char* name, sk_sp<SkData> encoded)
- : fEncoded(std::move(encoded))
-{
- fName.appendf("Color%s", FLAGS_xform_only ? "Xform" : "Codec");
- fName.appendf("_%s", name);
-}
-
-const char* ColorCodecBench::onGetName() {
- return fName.c_str();
-}
-
-bool ColorCodecBench::isSuitableFor(Backend backend) {
- return kNonRendering_Backend == backend;
-}
-
-void ColorCodecBench::decodeAndXform() {
-#ifdef SK_DEBUG
- SkCodec::Result result =
-#endif
- SkCodec::MakeFromData(fEncoded)->getPixels(fDstInfo, fDst.get(), fDstInfo.minRowBytes());
- SkASSERT(SkCodec::kSuccess == result);
-}
-
-void ColorCodecBench::xformOnly() {
- std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(fSrcSpace.get(),
- fDstSpace.get());
- SkASSERT(xform);
-
- void* dst = fDst.get();
- void* src = fSrc.get();
- for (int y = 0; y < fSrcInfo.height(); y++) {
- SkAssertResult(xform->apply(select_xform_format(fDstInfo.colorType()), dst,
- SkColorSpaceXform::kRGBA_8888_ColorFormat, src,
- fSrcInfo.width(), fDstInfo.alphaType()));
- dst = SkTAddOffset<void>(dst, fDstInfo.minRowBytes());
- src = SkTAddOffset<void>(src, fSrcInfo.minRowBytes());
- }
-}
-
-void ColorCodecBench::onDelayedSetup() {
- std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(fEncoded);
- fSrcInfo = codec->getInfo().makeColorType(kRGBA_8888_SkColorType);
- fDstInfo = fSrcInfo;
-
- fDstSpace = nullptr;
- if (FLAGS_srgb) {
- fDstSpace = SkColorSpace::MakeSRGB();
- } else if (FLAGS_nonstd) {
- SkColorSpaceTransferFn gamma;
- gamma.fA = 1.0f;
- gamma.fB = gamma.fC = gamma.fD = gamma.fE = gamma.fF = 0.0f;
- gamma.fG = 4.0f;
- SkMatrix44 matrix = SkMatrix44(SkMatrix44::kUninitialized_Constructor);
- matrix.set3x3(0.30f, 0.31f, 0.28f, 0.32f, 0.33f, 0.29f, 0.27f, 0.30f, 0.30f);
- fDstSpace = SkColorSpace::MakeRGB(gamma, matrix);
- } else {
- sk_sp<SkData> dstData = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
- SkASSERT(dstData);
- fDstSpace = SkColorSpace::MakeICC(dstData->data(), dstData->size());
- }
- SkASSERT(fDstSpace);
- fDstInfo = fDstInfo.makeColorSpace(fDstSpace);
-
- if (FLAGS_half) {
- fDstInfo = fDstInfo.makeColorType(kRGBA_F16_SkColorType);
- fDstSpace = fDstSpace->makeLinearGamma();
- }
-
- fDst.reset(fDstInfo.computeMinByteSize());
-
- if (FLAGS_xform_only) {
- fSrc.reset(fSrcInfo.computeMinByteSize());
- fSrcSpace = codec->getInfo().refColorSpace();
- codec->getPixels(fSrcInfo, fSrc.get(), fSrcInfo.minRowBytes());
- }
-}
-
-void ColorCodecBench::onDraw(int n, SkCanvas*) {
- for (int i = 0; i < n; i++) {
- if (FLAGS_xform_only) {
- this->xformOnly();
- } else {
- this->decodeAndXform();
- }
- }
-}