aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/VisualBench/VisualSKPBench.cpp
diff options
context:
space:
mode:
authorGravatar cdalton <cdalton@nvidia.com>2015-10-26 13:45:29 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-10-26 13:45:29 -0700
commite6d2024c689199b09df0d7048fc5252179d52aff (patch)
treefd967ae58aa7566d6d8418fe6c1ebf7e84de1ffe /tools/VisualBench/VisualSKPBench.cpp
parentc70483f5ab83aaa29c0697398aeca3432f3591b6 (diff)
Flush GrContext between benchmark draw loops
This change updates a small subset of benchmarks to flush the GrContext between draw loops (specifically SKP benchmarks, SampleApp, and the warmup in visualbench). This helps improve timing accuracy by not allowing the gpu to batch across draw boundaries in the affected benchmarks. BUG=skia: Review URL: https://codereview.chromium.org/1427533002
Diffstat (limited to 'tools/VisualBench/VisualSKPBench.cpp')
-rw-r--r--tools/VisualBench/VisualSKPBench.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/VisualBench/VisualSKPBench.cpp b/tools/VisualBench/VisualSKPBench.cpp
index 649d324a66..628265e53e 100644
--- a/tools/VisualBench/VisualSKPBench.cpp
+++ b/tools/VisualBench/VisualSKPBench.cpp
@@ -8,6 +8,10 @@
#include "VisualSKPBench.h"
+#if SK_SUPPORT_GPU
+#include "GrContext.h"
+#endif
+
VisualSKPBench::VisualSKPBench(const char* name, const SkPicture* pic)
: fPic(SkRef(pic))
, fName(name) {
@@ -29,5 +33,11 @@ bool VisualSKPBench::isSuitableFor(Backend backend) {
void VisualSKPBench::onDraw(int loops, SkCanvas* canvas) {
for (int i = 0; i < loops; i++) {
canvas->drawPicture(fPic);
+#if SK_SUPPORT_GPU
+ // Ensure the GrContext doesn't batch across draw loops.
+ if (GrContext* context = canvas->getGrContext()) {
+ context->flush();
+ }
+#endif
}
}