1410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com/*
2410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com * Copyright 2011 Google Inc.
3410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com *
4410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com * Use of this source code is governed by a BSD-style license that can be
5410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com * found in the LICENSE file.
6410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com */
7f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h"
8410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com#include "SkThread.h"
9410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com
10f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass MutexBench : public Benchmark {
11410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.compublic:
12644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org    virtual bool isSuitableFor(Backend backend) SK_OVERRIDE {
13644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org        return backend == kNonRendering_Backend;
14410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com    }
15644629c1c7913a43ced172b98d56e0f471bc348bcommit-bot@chromium.org
16410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.comprotected:
17410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com    virtual const char* onGetName() {
18410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com        return "mutex";
19410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com    }
20410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com
213361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org    virtual void onDraw(const int loops, SkCanvas*) {
22c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com        SK_DECLARE_STATIC_MUTEX(mu);
233361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org        for (int i = 0; i < loops; i++) {
24c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com            mu.acquire();
25c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com            mu.release();
26410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com        }
27410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com    }
28410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com
29410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.comprivate:
30f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina    typedef Benchmark INHERITED;
31410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com};
32410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com
33410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com///////////////////////////////////////////////////////////////////////////////
34410e9dc9aa3a79a19e708cad2f254a9e64891c80tomhudson@google.com
35410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new MutexBench(); )
36