diff options
author | Robert Phillips <robertphillips@google.com> | 2020-07-06 13:45:34 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2020-07-08 14:55:57 +0000 |
commit | f0288101b5fcff3db0ed3c68328d191634ff51b7 (patch) | |
tree | e88722b5106b4a186c76d9bf0a469371a06c0e70 /bench/SKPBench.cpp | |
parent | 3c8178b619bc35a54bcbad9c2cfe1d57353d09e3 (diff) | |
download | skia-f0288101b5fcff3db0ed3c68328d191634ff51b7.tar.gz |
Remove SkCanvas::getGrContext calls from benches
This will get us closer to deprecating getGrContext.
The benches have no SkSurface::getContext calls.
TBR=bsalomon@google.com
Change-Id: I6496a6324091a75d2829bd7ee20bdbe0dc3b6fe9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300654
Reviewed-by: Adlai Holler <adlai@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'bench/SKPBench.cpp')
-rw-r--r-- | bench/SKPBench.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/bench/SKPBench.cpp b/bench/SKPBench.cpp index f8a480e987..4755f8e57a 100644 --- a/bench/SKPBench.cpp +++ b/bench/SKPBench.cpp @@ -7,10 +7,10 @@ #include "bench/SKPBench.h" #include "include/core/SkSurface.h" +#include "include/gpu/GrDirectContext.h" +#include "src/gpu/GrContextPriv.h" #include "tools/flags/CommandLineFlags.h" -#include "include/gpu/GrContext.h" -#include "src/gpu/GrContextPriv.h" // These CPU tile sizes are not good per se, but they are similar to what Chrome uses. static DEFINE_int(CPUbenchTileW, 256, "Tile width used for CPU SKP playback."); @@ -51,7 +51,7 @@ void SKPBench::onPerCanvasPreDraw(SkCanvas* canvas) { SkIRect bounds = canvas->getDeviceClipBounds(); SkAssertResult(!bounds.isEmpty()); - const bool gpu = canvas->getGrContext() != nullptr; + const bool gpu = canvas->recordingContext() != nullptr; int tileW = gpu ? FLAGS_GPUbenchTileW : FLAGS_CPUbenchTileW, tileH = gpu ? FLAGS_GPUbenchTileH : FLAGS_CPUbenchTileH; @@ -116,9 +116,12 @@ void SKPBench::onDraw(int loops, SkCanvas* canvas) { if (0 == --loops) { break; } + + auto direct = canvas->recordingContext() ? canvas->recordingContext()->asDirectContext() + : nullptr; // Ensure the GrContext doesn't combine ops across draw loops. - if (GrContext* context = canvas->getGrContext()) { - context->flushAndSubmit(); + if (direct) { + direct->flushAndSubmit(); } } } @@ -140,7 +143,7 @@ void SKPBench::drawPicture() { } #include "src/gpu/GrGpu.h" -static void draw_pic_for_stats(SkCanvas* canvas, GrContext* context, const SkPicture* picture, +static void draw_pic_for_stats(SkCanvas* canvas, GrDirectContext* context, const SkPicture* picture, SkTArray<SkString>* keys, SkTArray<double>* values) { context->priv().resetGpuStats(); context->priv().resetContextStats(); @@ -154,15 +157,16 @@ static void draw_pic_for_stats(SkCanvas* canvas, GrContext* context, const SkPic void SKPBench::getGpuStats(SkCanvas* canvas, SkTArray<SkString>* keys, SkTArray<double>* values) { // we do a special single draw and then dump the key / value pairs - GrContext* context = canvas->getGrContext(); - if (!context) { + auto direct = canvas->recordingContext() ? canvas->recordingContext()->asDirectContext() + : nullptr; + if (!direct) { return; } // TODO refactor this out if we want to test other subclasses of skpbench - context->flushAndSubmit(); - context->freeGpuResources(); - context->resetContext(); - context->priv().getGpu()->resetShaderCacheForTesting(); - draw_pic_for_stats(canvas, context, fPic.get(), keys, values); + direct->flushAndSubmit(); + direct->freeGpuResources(); + direct->resetContext(); + direct->priv().getGpu()->resetShaderCacheForTesting(); + draw_pic_for_stats(canvas, direct, fPic.get(), keys, values); } |