skia2/dm/DMBenchTask.cpp
commit-bot@chromium.org 757ebd20ef Revert of Rename kPMColor_SkColorType to kN32_SkColorType. (https://codereview.chromium.org/227433009/)
Reason for revert:
breaking the Chrome deps roll.
http://build.chromium.org/p/chromium.linux/builders/Linux%20GN%20%28dbg%29/builds/839/steps/compile/logs/stdio

Original issue's description:
> Rename kPMColor_SkColorType to kN32_SkColorType.
>
> The new name better represents what this flag means.
>
> BUG=skia:2384
>
> Committed: http://code.google.com/p/skia/source/detail?r=14117

R=reed@google.com, scroggo@google.com
TBR=reed@google.com, scroggo@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:2384

Author: bensong@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14144 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-10 22:36:34 +00:00

86 lines
2.7 KiB
C++

#include "DMBenchTask.h"
#include "DMUtil.h"
#include "SkSurface.h"
namespace DM {
static SkString bench_name(const char* name, const char* config) {
SkString result("bench ");
result.appendf("%s_%s", name, config);
return result;
}
NonRenderingBenchTask::NonRenderingBenchTask(const char* config,
Reporter* reporter,
TaskRunner* tasks,
BenchRegistry::Factory factory)
: CpuTask(reporter, tasks)
, fBench(factory(NULL))
, fName(bench_name(fBench->getName(), config)) {}
CpuBenchTask::CpuBenchTask(const char* config,
Reporter* reporter,
TaskRunner* tasks,
BenchRegistry::Factory factory,
SkColorType colorType)
: CpuTask(reporter, tasks)
, fBench(factory(NULL))
, fName(bench_name(fBench->getName(), config))
, fColorType(colorType) {}
GpuBenchTask::GpuBenchTask(const char* config,
Reporter* reporter,
TaskRunner* tasks,
BenchRegistry::Factory factory,
GrContextFactory::GLContextType contextType,
int sampleCount)
: GpuTask(reporter, tasks)
, fBench(factory(NULL))
, fName(bench_name(fBench->getName(), config))
, fContextType(contextType)
, fSampleCount(sampleCount) {}
bool NonRenderingBenchTask::shouldSkip() const {
return !fBench->isSuitableFor(SkBenchmark::kNonRendering_Backend);
}
bool CpuBenchTask::shouldSkip() const {
return !fBench->isSuitableFor(SkBenchmark::kRaster_Backend);
}
bool GpuBenchTask::shouldSkip() const {
return kGPUDisabled || !fBench->isSuitableFor(SkBenchmark::kGPU_Backend);
}
static void draw_raster(SkBenchmark* bench, SkColorType colorType) {
SkBitmap bitmap;
SetupBitmap(colorType, bench, &bitmap);
SkCanvas canvas(bitmap);
bench->preDraw();
bench->draw(1, &canvas);
bench->postDraw();
}
void NonRenderingBenchTask::draw() {
draw_raster(fBench.get(), kPMColor_SkColorType);
}
void CpuBenchTask::draw() {
draw_raster(fBench.get(), fColorType);
}
void GpuBenchTask::draw(GrContextFactory* grFactory) {
SkImageInfo info = SkImageInfo::Make(fBench->getSize().x(),
fBench->getSize().y(),
kPMColor_SkColorType,
kPremul_SkAlphaType);
SkAutoTUnref<SkSurface> surface(NewGpuSurface(grFactory, fContextType, info, fSampleCount));
fBench->preDraw();
fBench->draw(1, surface->getCanvas());
fBench->postDraw();
}
} // namespace DM