diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-11-21 06:21:58 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-11-21 06:21:58 +0000 |
commit | 644629c1c7913a43ced172b98d56e0f471bc348b (patch) | |
tree | 944e9533b0ed138a623b2adf8c8dedd3fedafca2 /bench/MathBench.cpp | |
parent | bf6426120a8a9a034f37d37feaf942b1386b7a84 (diff) |
Implement a benchmark for GrResourceCache
Adds "grresourcecache_add" and "grresourcecache_find" bench tests to test
GrResourceCache::add and GrResourceCache::find. The tests work only
with GPU backends, since GrResourceCache needs an GrGpu.
Modifies bench tests to override SkBenchmark::isSuitableFor(Backend)
function that specifies what kind of backend the test is inteded
for. This replaces the previous "fIsRendering" flag that would
indicate test that did no rendering.
Adds SkCanvas::getGrContext() call to get the GrContext that the
canvas ends up drawing to. The member function solves a common
use-case that is also used in the benchmark added here.
R=mtklein@google.com, bsalomon@google.com
Author: kkinnunen@nvidia.com
Review URL: https://codereview.chromium.org/73643005
git-svn-id: http://skia.googlecode.com/svn/trunk@12334 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/MathBench.cpp')
-rw-r--r-- | bench/MathBench.cpp | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp index 6327c3c580..8094219f9d 100644 --- a/bench/MathBench.cpp +++ b/bench/MathBench.cpp @@ -29,8 +29,10 @@ public: for (int i = 0; i < kBuffer; ++i) { fSrc[i] = rand.nextSScalar1(); } + } - fIsRendering = false; + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } virtual void performTest(float* SK_RESTRICT dst, @@ -281,7 +283,10 @@ public: fProc = gRec[index].fProc; fName = gRec[index].fName; } - fIsRendering = false; + } + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } protected: @@ -346,7 +351,10 @@ public: } else { fName = "floor_std"; } - fIsRendering = false; + } + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } virtual void process(float) {} @@ -404,7 +412,10 @@ public: } else { fName = "clz_intrinsic"; } - fIsRendering = false; + } + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } // just so the compiler doesn't remove our loops @@ -457,7 +468,10 @@ public: } fName = "point_normalize"; - fIsRendering = false; + } + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } // just so the compiler doesn't remove our loops @@ -501,7 +515,10 @@ public: fData[i%N] = rand.nextSScalar1(); } - fIsRendering = false; + } + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } protected: @@ -534,7 +551,10 @@ class DivModBench : public SkBenchmark { public: explicit DivModBench(const char* name) { fName.printf("divmod_%s", name); - fIsRendering = false; + } + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; } protected: |