1 /* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "nanobenchAndroid.h" 9 10 #include "AnimationContext.h" 11 #include "IContextFactory.h" 12 #include "SkiaCanvasProxy.h" 13 #include "android/rect.h" 14 #include "android/native_window.h" 15 #include "renderthread/TimeLord.h" 16 17 /* These functions are only compiled in the Android Framework. */ 18 HWUITarget(const Config & c,Benchmark * bench)19HWUITarget::HWUITarget(const Config& c, Benchmark* bench) : Target(c) { } 20 setup()21void HWUITarget::setup() { 22 this->renderer.proxy->fence(); 23 } 24 beginTiming(SkCanvas * canvas)25SkCanvas* HWUITarget::beginTiming(SkCanvas* canvas) { 26 SkCanvas* targetCanvas = this->renderer.prepareToDraw(); 27 if (targetCanvas) { 28 this->fc.reset(targetCanvas); 29 canvas = &this->fc; 30 // This might minimally distort timing, but canvas isn't valid outside the timer. 31 canvas->clear(SK_ColorWHITE); 32 } 33 34 return canvas; 35 } 36 endTiming()37void HWUITarget::endTiming() { 38 this->renderer.finishDrawing(); 39 } 40 fence()41void HWUITarget::fence() { 42 this->renderer.proxy->fence(); 43 } 44 needsFrameTiming() const45bool HWUITarget::needsFrameTiming() const { 46 return true; 47 } 48 init(SkImageInfo info,Benchmark * bench)49bool HWUITarget::init(SkImageInfo info, Benchmark* bench) { 50 this->renderer.initialize({bench->getSize().x(), bench->getSize().y()}); 51 return true; 52 } 53 capturePixels(SkBitmap * bmp)54bool HWUITarget::capturePixels(SkBitmap* bmp) { 55 return this->renderer.capturePixels(bmp); 56 } 57 58 59