Fix for nexus 5 crashing in GL benches
GLBenches do not expect gl state to change between onPerCanvasPreDraw and *PostDraw, but we do a clear and sometimes we clear as draw. This causes us to bind vertex objects / programs / etc.
This change creates two new virtual methods which are called right before and immediately after timing.
BUG=skia:
Review URL: https://codereview.chromium.org/1379853003
diff --git a/tools/VisualBench/VisualLightweightBenchModule.cpp b/tools/VisualBench/VisualLightweightBenchModule.cpp
index d5e4e5b..d54c788 100644
--- a/tools/VisualBench/VisualLightweightBenchModule.cpp
+++ b/tools/VisualBench/VisualLightweightBenchModule.cpp
@@ -169,7 +169,7 @@
fOwner->clear(canvas, SK_ColorWHITE, 2);
- fBenchmark->preDraw();
+ fBenchmark->delayedSetup();
fRecords.push_back();
// Log bench name
@@ -184,6 +184,7 @@
void VisualLightweightBenchModule::perCanvasPreDraw(SkCanvas* canvas, State nextState) {
fBenchmark->perCanvasPreDraw(canvas);
+ fBenchmark->preDraw(canvas);
fCurrentFrame = 0;
this->nextState(nextState);
}
@@ -293,6 +294,7 @@
}
void VisualLightweightBenchModule::postDraw(SkCanvas* canvas) {
+ fBenchmark->postDraw(canvas);
fBenchmark->perCanvasPostDraw(canvas);
fBenchmark.reset(nullptr);
fCurrentSample = 0;