skia2/bench/CodecBench.cpp
Mike Klein 84836b799a moar static flags
Like any normal variable, flags can be made file-scoped static,
and like any normal variable, mostly they should be if they can.

This CL converts most flags to be static, if only so that the
ones that do cross files stand out more clearly, and so that
there's more examples of static flags through the codebase for
people to ape.

Change-Id: Ibb5ddd7aa09fce073d0996ac3ef0487b078b7d79
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/202800
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-03-21 17:07:13 +00:00

67 lines
2.0 KiB
C++

/*
* 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 "CodecBench.h"
#include "CodecBenchPriv.h"
#include "CommandLineFlags.h"
#include "SkBitmap.h"
#include "SkCodec.h"
#include "SkOSFile.h"
// Actually zeroing the memory would throw off timing, so we just lie.
static DEFINE_bool(zero_init, false,
"Pretend our destination is zero-intialized, simulating Android?");
CodecBench::CodecBench(SkString baseName, SkData* encoded, SkColorType colorType,
SkAlphaType alphaType)
: fColorType(colorType)
, fAlphaType(alphaType)
, fData(SkRef(encoded))
{
// Parse filename and the color type to give the benchmark a useful name
fName.printf("Codec_%s_%s%s", baseName.c_str(), color_type_to_str(colorType),
alpha_type_to_str(alphaType));
// Ensure that we can create an SkCodec from this data.
SkASSERT(SkCodec::MakeFromData(fData));
}
const char* CodecBench::onGetName() {
return fName.c_str();
}
bool CodecBench::isSuitableFor(Backend backend) {
return kNonRendering_Backend == backend;
}
void CodecBench::onDelayedSetup() {
std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(fData);
fInfo = codec->getInfo().makeColorType(fColorType)
.makeAlphaType(fAlphaType)
.makeColorSpace(nullptr);
fPixelStorage.reset(fInfo.computeMinByteSize());
}
void CodecBench::onDraw(int n, SkCanvas* canvas) {
std::unique_ptr<SkCodec> codec;
SkCodec::Options options;
if (FLAGS_zero_init) {
options.fZeroInitialized = SkCodec::kYes_ZeroInitialized;
}
for (int i = 0; i < n; i++) {
codec = SkCodec::MakeFromData(fData);
#ifdef SK_DEBUG
const SkCodec::Result result =
#endif
codec->getPixels(fInfo, fPixelStorage.get(), fInfo.minRowBytes(),
&options);
SkASSERT(result == SkCodec::kSuccess
|| result == SkCodec::kIncompleteInput);
}
}