1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "bench/Benchmark.h"
- #include "include/core/SkCanvas.h"
- #include "include/core/SkPaint.h"
- #include "include/utils/SkRandom.h"
- /**
- * Draws full screen opaque rectangles. It is designed to test any optimizations in the GPU backend
- * to turn such draws into clears.
- */
- class FSRectBench : public Benchmark {
- public:
- FSRectBench() : fInit(false) { }
- protected:
- const char* onGetName() override { return "fullscreen_rects"; }
- void onDelayedSetup() override {
- if (!fInit) {
- SkRandom rand;
- static const SkScalar kMinOffset = 0;
- static const SkScalar kMaxOffset = 100 * SK_Scalar1;
- static const SkScalar kOffsetRange = kMaxOffset - kMinOffset;
- for (int i = 0; i < N; ++i) {
- fRects[i].fLeft = -kMinOffset - rand.nextUScalar1() * kOffsetRange;
- fRects[i].fTop = -kMinOffset - rand.nextUScalar1() * kOffsetRange;
- fRects[i].fRight = W + kMinOffset + rand.nextUScalar1() * kOffsetRange;
- fRects[i].fBottom = H + kMinOffset + rand.nextUScalar1() * kOffsetRange;
- fColors[i] = rand.nextU() | 0xFF000000;
- }
- fInit = true;
- }
- }
- void onDraw(int loops, SkCanvas* canvas) override {
- SkPaint paint;
- for (int i = 0; i < loops; ++i) {
- paint.setColor(fColors[i % N]);
- canvas->drawRect(fRects[i % N], paint);
- }
- }
- private:
- enum {
- W = 640,
- H = 480,
- N = 300,
- };
- SkRect fRects[N];
- SkColor fColors[N];
- bool fInit;
- typedef Benchmark INHERITED;
- };
- DEF_BENCH(return new FSRectBench();)
|