GPU workaround to simulate Out of Memory errors with large textures
[chromium-blink-merge.git] / cc / debug / micro_benchmark.h
blob1654c368f1dc3be7cf6b48d7b908959f82524f94
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_DEBUG_MICRO_BENCHMARK_H_
6 #define CC_DEBUG_MICRO_BENCHMARK_H_
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/base/cc_export.h"
12 namespace base {
13 class Value;
14 class MessageLoopProxy;
15 } // namespace base
17 namespace cc {
19 class LayerTreeHost;
20 class Layer;
21 class PictureLayer;
22 class MicroBenchmarkImpl;
23 class CC_EXPORT MicroBenchmark {
24 public:
25 typedef base::Callback<void(scoped_ptr<base::Value>)> DoneCallback;
27 explicit MicroBenchmark(const DoneCallback& callback);
28 virtual ~MicroBenchmark();
30 bool IsDone() const;
31 virtual void DidUpdateLayers(LayerTreeHost* host);
32 int id() const { return id_; }
33 void set_id(int id) { id_ = id; }
35 virtual void RunOnLayer(Layer* layer);
36 virtual void RunOnLayer(PictureLayer* layer);
38 virtual bool ProcessMessage(scoped_ptr<base::Value> value);
40 bool ProcessedForBenchmarkImpl() const;
41 scoped_ptr<MicroBenchmarkImpl> GetBenchmarkImpl(
42 scoped_refptr<base::MessageLoopProxy> origin_loop);
44 protected:
45 void NotifyDone(scoped_ptr<base::Value> result);
47 virtual scoped_ptr<MicroBenchmarkImpl> CreateBenchmarkImpl(
48 scoped_refptr<base::MessageLoopProxy> origin_loop);
50 private:
51 DoneCallback callback_;
52 bool is_done_;
53 bool processed_for_benchmark_impl_;
54 int id_;
57 } // namespace cc
59 #endif // CC_DEBUG_MICRO_BENCHMARK_H_