/*
 * 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 == Backend::kNonRendering; }

    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++) {
            uint32_t val = rand * 1664525 + 1013904223;
            rand = val;
        }
    }
};
DEF_BENCH(return new ControlBench;)
