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 /src/core | |
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 'src/core')
-rw-r--r-- | src/core/SkCanvas.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 0d5fccb91f..4eaea11b87 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -26,6 +26,10 @@ #include "SkTLazy.h" #include "SkUtils.h" +#if SK_SUPPORT_GPU +#include "GrRenderTarget.h" +#endif + SK_DEFINE_INST_COUNT(SkBounder) SK_DEFINE_INST_COUNT(SkCanvas) SK_DEFINE_INST_COUNT(SkDrawFilter) @@ -1570,6 +1574,20 @@ SkBaseDevice* SkCanvas::createCompatibleDevice(SkBitmap::Config config, } } +GrContext* SkCanvas::getGrContext() { +#if SK_SUPPORT_GPU + SkBaseDevice* device = this->getTopDevice(); + if (NULL != device) { + GrRenderTarget* renderTarget = device->accessRenderTarget(); + if (NULL != renderTarget) { + return renderTarget->getContext(); + } + } +#endif + + return NULL; + +} ////////////////////////////////////////////////////////////////////////////// // These are the virtual drawing methods |