From e45c81c8f3bb62e45f2ff3b8772b4b23f1ddc6ca Mon Sep 17 00:00:00 2001 From: joshualitt Date: Wed, 2 Dec 2015 09:05:37 -0800 Subject: Began logging more gpu stats from nanobench BUG=skia: Review URL: https://codereview.chromium.org/1489033004 --- bench/SKPBench.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'bench/SKPBench.cpp') diff --git a/bench/SKPBench.cpp b/bench/SKPBench.cpp index 910af6b802..c548090405 100644 --- a/bench/SKPBench.cpp +++ b/bench/SKPBench.cpp @@ -155,3 +155,41 @@ void SKPBench::drawPicture() { fSurfaces[j]->getCanvas()->flush(); } } + +#if SK_SUPPORT_GPU +static void draw_pic_for_stats(SkCanvas* canvas, GrContext* context, const SkPicture* picture, + SkTArray* keys, SkTArray* values, + const char* tag) { + context->resetGpuStats(); + canvas->drawPicture(picture); + canvas->flush(); + + int offset = keys->count(); + context->dumpGpuStatsKeyValuePairs(keys, values); + + // append tag, but only to new tags + for (int i = offset; i < keys->count(); i++, offset++) { + (*keys)[i].appendf("_%s", tag); + } +} +#endif + +void SKPBench::getGpuStats(SkCanvas* canvas, SkTArray* keys, SkTArray* values) { +#if SK_SUPPORT_GPU + // we do a special single draw and then dump the key / value pairs + GrContext* context = canvas->getGrContext(); + if (!context) { + return; + } + + // TODO refactor this out if we want to test other subclasses of skpbench + context->flush(); + context->freeGpuResources(); + context->resetContext(); + draw_pic_for_stats(canvas, context, fPic, keys, values, "first_frame"); + + // draw second frame + draw_pic_for_stats(canvas, context, fPic, keys, values, "second_frame"); + +#endif +} -- cgit v1.2.3