/*
 * Copyright 2015 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"

// This benchmark's runtime should be fairly constant for a given machine,
// so it can be used as a baseline to control for thermal or other throttling.

struct ControlBench : public Benchmark {
    const char* onGetName() override { return "control"; }
    bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }

    void onDraw(int loops, SkCanvas*) override {
        // Nothing terribly useful: force a memory read, a memory write, and some math.
        [[maybe_unused]] volatile uint32_t rand = 0;
        for (int i = 0; i < 1000*loops; i++) {
            rand *= 1664525;
            rand += 1013904223;
        }
    }
};
DEF_BENCH(return new ControlBench;)
