1// Copyright (c) 2011 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.
4
5// Define the interface for a generic simulation, and a factory method for
6// instantiating different models.
7
8#ifndef GPU_TOOLS_COMPOSITOR_MODEL_BENCH_RENDER_MODELS_H_
9#define GPU_TOOLS_COMPOSITOR_MODEL_BENCH_RENDER_MODELS_H_
10
11#include "gpu/tools/compositor_model_bench/render_tree.h"
12
13#include "base/basictypes.h"
14#include "base/memory/scoped_ptr.h"
15
16enum RenderModel {
17  ForwardRenderModel
18};
19
20const char* ModelToString(RenderModel m);
21
22class RenderModelSimulator {
23 public:
24  virtual ~RenderModelSimulator();
25  virtual void Update() = 0;
26  virtual void Resize(int width, int height) = 0;
27
28 protected:
29  explicit RenderModelSimulator(RenderNode* root);
30  scoped_ptr<RenderNode> root_;
31
32 private:
33  DISALLOW_IMPLICIT_CONSTRUCTORS(RenderModelSimulator);
34};
35
36RenderModelSimulator* ConstructSimulationModel(RenderModel model,
37                                               RenderNode* render_tree_root,
38                                               int window_width,
39                                               int window_height);
40
41#endif  // GPU_TOOLS_COMPOSITOR_MODEL_BENCH_RENDER_MODELS_H_
42
43