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
19HWUITarget::HWUITarget(const Config& c, Benchmark* bench) : Target(c) { }
20
21void HWUITarget::setup() {
22    this->renderer.proxy->fence();
23}
24
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
37void HWUITarget::endTiming() {
38    this->renderer.finishDrawing();
39}
40
41void HWUITarget::fence() {
42    this->renderer.proxy->fence();
43}
44
45bool HWUITarget::needsFrameTiming() const {
46    return true;
47}
48
49bool HWUITarget::init(SkImageInfo info, Benchmark* bench) {
50    this->renderer.initialize({bench->getSize().x(), bench->getSize().y()});
51    return true;
52}
53
54bool HWUITarget::capturePixels(SkBitmap* bmp) {
55    return this->renderer.capturePixels(bmp);
56}
57
58
59