aboutsummaryrefslogtreecommitdiff
path: root/bench/SKPBench.cpp
diff options
context:
space:
mode:
authorRobert Phillips <robertphillips@google.com>2020-07-06 13:45:34 -0400
committerSkia Commit-Bot <skia-commit-bot@chromium.org>2020-07-08 14:55:57 +0000
commitf0288101b5fcff3db0ed3c68328d191634ff51b7 (patch)
treee88722b5106b4a186c76d9bf0a469371a06c0e70 /bench/SKPBench.cpp
parent3c8178b619bc35a54bcbad9c2cfe1d57353d09e3 (diff)
downloadskia-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.cpp30
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);
}