aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar cdalton <cdalton@nvidia.com>2015-10-26 13:14:36 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-10-26 13:14:36 -0700
commitc70483f5ab83aaa29c0697398aeca3432f3591b6 (patch)
treed3d0bf3a1c64d47bf090b7ca4bed8a61f757c902 /tools
parent6db78d74fab9b285e7d4b4ae54ad278420596e8a (diff)
Add visualbench option for device-independent fonts
Diffstat (limited to 'tools')
-rw-r--r--tools/VisualBench/VisualBench.cpp8
-rw-r--r--tools/VisualBench/VisualBenchmarkStream.cpp9
-rw-r--r--tools/VisualBench/VisualBenchmarkStream.h3
-rw-r--r--tools/VisualBench/VisualStreamTimingModule.cpp2
-rw-r--r--tools/VisualBench/WrappedBenchmark.h20
5 files changed, 29 insertions, 13 deletions
diff --git a/tools/VisualBench/VisualBench.cpp b/tools/VisualBench/VisualBench.cpp
index 893dba6ab3..10fdbfe4b1 100644
--- a/tools/VisualBench/VisualBench.cpp
+++ b/tools/VisualBench/VisualBench.cpp
@@ -24,12 +24,18 @@
DEFINE_bool2(fullscreen, f, true, "Run fullscreen.");
DEFINE_bool2(interactive, n, false, "Run in interactive mode.");
+DEFINE_bool2(dif, d, false, "Use device-independent fonts.");
VisualBench::VisualBench(void* hwnd, int argc, char** argv)
: INHERITED(hwnd) {
SkCommandLineFlags::Parse(argc, argv);
- // this has to happen after commandline parsing
+ // these have to happen after commandline parsing
+ if (FLAGS_dif) {
+ const SkSurfaceProps& props(INHERITED::getSurfaceProps());
+ uint32_t flags = SkSurfaceProps::kUseDeviceIndependentFonts_Flag | props.flags();
+ INHERITED::setSurfaceProps(SkSurfaceProps(flags, props.pixelGeometry()));
+ }
fModule.reset(new VisualLightweightBenchModule(this));
if (FLAGS_interactive) {
fModule.reset(new VisualInteractiveModule(this));
diff --git a/tools/VisualBench/VisualBenchmarkStream.cpp b/tools/VisualBench/VisualBenchmarkStream.cpp
index 906aab2788..66e7cb0aab 100644
--- a/tools/VisualBench/VisualBenchmarkStream.cpp
+++ b/tools/VisualBench/VisualBenchmarkStream.cpp
@@ -57,8 +57,9 @@ private:
SkPath fPath;
};
-VisualBenchmarkStream::VisualBenchmarkStream()
- : fBenches(BenchRegistry::Head())
+VisualBenchmarkStream::VisualBenchmarkStream(const SkSurfaceProps& surfaceProps)
+ : fSurfaceProps(surfaceProps)
+ , fBenches(BenchRegistry::Head())
, fGMs(skiagm::GMRegistry::Head())
, fSourceType(nullptr)
, fBenchType(nullptr)
@@ -119,9 +120,9 @@ Benchmark* VisualBenchmarkStream::next() {
// TODO move this all to --config
if (bench && FLAGS_cpu) {
- bench = new CpuWrappedBenchmark(bench);
+ bench = new CpuWrappedBenchmark(fSurfaceProps, bench);
} else if (bench && FLAGS_nvpr) {
- bench = new NvprWrappedBenchmark(bench, 4);
+ bench = new NvprWrappedBenchmark(fSurfaceProps, bench, 4);
}
fBenchmark.reset(bench);
diff --git a/tools/VisualBench/VisualBenchmarkStream.h b/tools/VisualBench/VisualBenchmarkStream.h
index 89ca632821..6718d3a936 100644
--- a/tools/VisualBench/VisualBenchmarkStream.h
+++ b/tools/VisualBench/VisualBenchmarkStream.h
@@ -18,7 +18,7 @@ DECLARE_string(match);
class VisualBenchmarkStream {
public:
- VisualBenchmarkStream();
+ VisualBenchmarkStream(const SkSurfaceProps&);
static bool ReadPicture(const char* path, SkAutoTUnref<SkPicture>* pic);
@@ -28,6 +28,7 @@ public:
private:
Benchmark* innerNext();
+ SkSurfaceProps fSurfaceProps;
const BenchRegistry* fBenches;
const skiagm::GMRegistry* fGMs;
SkTArray<SkString> fSKPs;
diff --git a/tools/VisualBench/VisualStreamTimingModule.cpp b/tools/VisualBench/VisualStreamTimingModule.cpp
index cecc5acca7..ad7c1d0e80 100644
--- a/tools/VisualBench/VisualStreamTimingModule.cpp
+++ b/tools/VisualBench/VisualStreamTimingModule.cpp
@@ -13,7 +13,7 @@ VisualStreamTimingModule::VisualStreamTimingModule(VisualBench* owner, bool preW
: fInitState(kReset_InitState)
, fPreWarmBeforeSample(preWarmBeforeSample)
, fOwner(owner) {
- fBenchmarkStream.reset(new VisualBenchmarkStream);
+ fBenchmarkStream.reset(new VisualBenchmarkStream(owner->getSurfaceProps()));
}
inline void VisualStreamTimingModule::handleInitState(SkCanvas* canvas) {
diff --git a/tools/VisualBench/WrappedBenchmark.h b/tools/VisualBench/WrappedBenchmark.h
index 6fac145d3a..ffa0da342a 100644
--- a/tools/VisualBench/WrappedBenchmark.h
+++ b/tools/VisualBench/WrappedBenchmark.h
@@ -17,7 +17,11 @@
class WrappedBenchmark : public Benchmark {
public:
// Takes ownership of caller's ref on `bench`.
- explicit WrappedBenchmark(Benchmark* bench) : fBench(bench) {}
+ explicit WrappedBenchmark(const SkSurfaceProps& surfaceProps, Benchmark* bench)
+ : fSurfaceProps(surfaceProps)
+ , fBench(bench) {}
+
+ const SkSurfaceProps& surfaceProps() const { return fSurfaceProps; }
const char* onGetName() override { return fBench->getName(); }
const char* onGetUniqueName() override { return fBench->getUniqueName(); }
@@ -52,6 +56,7 @@ public:
private:
virtual SkSurface* setupOffScreen(SkCanvas*)=0;
+ SkSurfaceProps fSurfaceProps;
SkAutoTUnref<SkSurface> fOffScreen;
SkAutoTUnref<Benchmark> fBench;
};
@@ -59,11 +64,12 @@ private:
// Create a raster surface for off screen rendering
class CpuWrappedBenchmark : public WrappedBenchmark {
public:
- explicit CpuWrappedBenchmark(Benchmark* bench) : INHERITED(bench) {}
+ explicit CpuWrappedBenchmark(const SkSurfaceProps& surfaceProps, Benchmark* bench)
+ : INHERITED(surfaceProps, bench) {}
private:
SkSurface* setupOffScreen(SkCanvas* canvas) override {
- return SkSurface::NewRaster(canvas->imageInfo());
+ return SkSurface::NewRaster(canvas->imageInfo(), &this->surfaceProps());
}
typedef WrappedBenchmark INHERITED;
@@ -72,8 +78,9 @@ private:
// Create an MSAA & NVPR-enabled GPU backend
class NvprWrappedBenchmark : public WrappedBenchmark {
public:
- explicit NvprWrappedBenchmark(Benchmark* bench, int numSamples)
- : INHERITED(bench)
+ explicit NvprWrappedBenchmark(const SkSurfaceProps& surfaceProps, Benchmark* bench,
+ int numSamples)
+ : INHERITED(surfaceProps, bench)
, fNumSamples(numSamples) {}
private:
@@ -81,7 +88,8 @@ private:
return SkSurface::NewRenderTarget(canvas->getGrContext(),
SkSurface::kNo_Budgeted,
canvas->imageInfo(),
- fNumSamples);
+ fNumSamples,
+ &this->surfaceProps());
}
int fNumSamples;