84836b799a
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>
67 lines
2.0 KiB
C++
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);
|
|
}
|
|
}
|