Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(586)

Unified Diff: gpu/tools/compositor_model_bench/render_tree.h

Issue 7792002: Initial checkin of the compositor_model_bench tool (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more clang fixes Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/tools/compositor_model_bench/render_models.cc ('k') | gpu/tools/compositor_model_bench/render_tree.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/tools/compositor_model_bench/render_tree.h
diff --git a/gpu/tools/compositor_model_bench/render_tree.h b/gpu/tools/compositor_model_bench/render_tree.h
new file mode 100644
index 0000000000000000000000000000000000000000..cc476fdf65a8f8e7ce971d10ba674ce8673499b9
--- /dev/null
+++ b/gpu/tools/compositor_model_bench/render_tree.h
@@ -0,0 +1,211 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Data structures for representing parts of Chromium's composited layer tree
+// and a function to load it from the JSON configuration file
+
+#ifndef GPU_TOOLS_COMPOSITOR_MODEL_BENCH_RENDER_TREE_H_
+#define GPU_TOOLS_COMPOSITOR_MODEL_BENCH_RENDER_TREE_H_
+
+#include <string>
+#include <vector>
+
+#include "base/compiler_specific.h"
+#include "base/memory/scoped_vector.h"
+#include "gpu/tools/compositor_model_bench/shaders.h"
+#include "ui/gfx/gl/gl_bindings.h"
+#include "ui/gfx/gl/gl_implementation.h"
+
+// These are fairly arbitrary values based on how big my actual browser
+// window was.
+const int WINDOW_WIDTH = 1609;
+const int WINDOW_HEIGHT = 993;
+
+struct Tile {
+ int x;
+ int y;
+ int texID;
+};
+
+struct Texture {
+ int texID;
+ int height;
+ int width;
+ GLenum format;
+};
+
+GLenum TextureFormatFromString(std::string format);
+const char* TextureFormatName(GLenum format);
+int FormatBytesPerPixel(GLenum format);
+
+class RenderNodeVisitor;
+
+class RenderNode {
+ public:
+ RenderNode();
+ virtual ~RenderNode();
+ virtual void Accept(RenderNodeVisitor* v);
+
+ int layerID() {
+ return layerID_;
+ }
+
+ void set_layerID(int id) {
+ layerID_ = id;
+ }
+
+ int width() {
+ return width_;
+ }
+
+ void set_width(int width) {
+ width_ = width;
+ }
+
+ int height() {
+ return height_;
+ }
+
+ void set_height(int height) {
+ height_ = height;
+ }
+
+ bool drawsContent() {
+ return drawsContent_;
+ }
+
+ void set_drawsContent(bool draws) {
+ drawsContent_ = draws;
+ }
+
+ void set_targetSurface(int surface) {
+ targetSurface_ = surface;
+ }
+
+ float* transform() {
+ return transform_;
+ }
+
+ void set_transform(float* mat) {
+ memcpy(reinterpret_cast<void*>(transform_),
+ reinterpret_cast<void*>(mat),
+ 16 * sizeof(transform_[0]));
+ }
+
+ void add_tile(Tile t) {
+ tiles_.push_back(t);
+ }
+
+ size_t num_tiles() {
+ return tiles_.size();
+ }
+
+ Tile* tile(size_t index) {
+ return &tiles_[index];
+ }
+
+ int tile_width() {
+ return tile_width_;
+ }
+
+ void set_tile_width(int width) {
+ tile_width_ = width;
+ }
+
+ int tile_height() {
+ return tile_height_;
+ }
+
+ void set_tile_height(int height) {
+ tile_height_ = height;
+ }
+
+ private:
+ int layerID_;
+ int width_;
+ int height_;
+ bool drawsContent_;
+ int targetSurface_;
+ float transform_[16];
+ std::vector<Tile> tiles_;
+ int tile_width_;
+ int tile_height_;
+};
+
+class ContentLayerNode : public RenderNode {
+ public:
+ ContentLayerNode();
+ virtual ~ContentLayerNode();
+ virtual void Accept(RenderNodeVisitor* v) OVERRIDE;
+
+ void set_skipsDraw(bool skips) {
+ skipsDraw_ = skips;
+ }
+
+ void add_child(RenderNode* child) {
+ children_.push_back(child);
+ }
+
+ private:
+ ScopedVector<RenderNode> children_;
+ bool skipsDraw_;
+};
+
+class CCNode : public RenderNode {
+ public:
+ CCNode();
+ virtual ~CCNode();
+
+ virtual void Accept(RenderNodeVisitor* v) OVERRIDE;
+
+ ShaderID vertex_shader() {
+ return vertex_shader_;
+ }
+
+ void set_vertex_shader(ShaderID shader) {
+ vertex_shader_ = shader;
+ }
+
+ ShaderID fragment_shader() {
+ return fragment_shader_;
+ }
+
+ void set_fragment_shader(ShaderID shader) {
+ fragment_shader_ = shader;
+ }
+
+ void add_texture(Texture t) {
+ textures_.push_back(t);
+ }
+
+ size_t num_textures() {
+ return textures_.size();
+ }
+
+ Texture* texture(size_t index) {
+ return &textures_[index];
+ }
+
+ private:
+ ShaderID vertex_shader_;
+ ShaderID fragment_shader_;
+ std::vector<Texture> textures_;
+};
+
+class RenderNodeVisitor {
+ public:
+ virtual ~RenderNodeVisitor();
+
+ virtual void BeginVisitRenderNode(RenderNode* v) = 0;
+ virtual void BeginVisitContentLayerNode(ContentLayerNode* v);
+ virtual void BeginVisitCCNode(CCNode* v);
+ virtual void EndVisitRenderNode(RenderNode* v);
+ virtual void EndVisitContentLayerNode(ContentLayerNode* v);
+ virtual void EndVisitCCNode(CCNode* v);
+};
+
+RenderNode* BuildRenderTreeFromFile(const FilePath& path);
+
+#endif // GPU_TOOLS_COMPOSITOR_MODEL_BENCH_RENDER_TREE_H_
+
« no previous file with comments | « gpu/tools/compositor_model_bench/render_models.cc ('k') | gpu/tools/compositor_model_bench/render_tree.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698