OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ | 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ |
6 #define GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ | 6 #define GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/hash_tables.h" | 10 #include "base/hash_tables.h" |
11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "gpu/command_buffer/service/gl_utils.h" | 13 #include "gpu/command_buffer/service/gl_utils.h" |
14 #include "gpu/command_buffer/service/memory_tracking.h" | 14 #include "gpu/command_buffer/service/memory_tracking.h" |
15 #include "gpu/gpu_export.h" | 15 #include "gpu/gpu_export.h" |
16 | 16 |
17 namespace gpu { | 17 namespace gpu { |
18 namespace gles2 { | 18 namespace gles2 { |
19 | 19 |
20 class RenderbufferManager; | 20 class RenderbufferManager; |
21 | 21 |
22 // Info about a Renderbuffer. | 22 // Info about a Renderbuffer. |
23 class GPU_EXPORT Renderbuffer | 23 class GPU_EXPORT Renderbuffer |
24 : public base::RefCounted<Renderbuffer> { | 24 : public base::RefCounted<Renderbuffer> { |
25 public: | 25 public: |
26 Renderbuffer(RenderbufferManager* manager, GLuint service_id); | 26 Renderbuffer(RenderbufferManager* manager, |
| 27 GLuint client_id, |
| 28 GLuint service_id); |
27 | 29 |
28 GLuint service_id() const { | 30 GLuint service_id() const { |
29 return service_id_; | 31 return service_id_; |
30 } | 32 } |
31 | 33 |
| 34 GLuint client_id() const { |
| 35 return client_id_; |
| 36 } |
| 37 |
32 bool cleared() const { | 38 bool cleared() const { |
33 return cleared_; | 39 return cleared_; |
34 } | 40 } |
35 | 41 |
36 GLenum internal_format() const { | 42 GLenum internal_format() const { |
37 return internal_format_; | 43 return internal_format_; |
38 } | 44 } |
39 | 45 |
40 GLsizei samples() const { | 46 GLsizei samples() const { |
41 return samples_; | 47 return samples_; |
42 } | 48 } |
43 | 49 |
44 GLsizei width() const { | 50 GLsizei width() const { |
45 return width_; | 51 return width_; |
46 } | 52 } |
47 | 53 |
48 GLsizei height() const { | 54 GLsizei height() const { |
49 return height_; | 55 return height_; |
50 } | 56 } |
51 | 57 |
52 bool IsDeleted() const { | 58 bool IsDeleted() const { |
53 return deleted_; | 59 return client_id_ == 0; |
54 } | 60 } |
55 | 61 |
56 void MarkAsValid() { | 62 void MarkAsValid() { |
57 has_been_bound_ = true; | 63 has_been_bound_ = true; |
58 } | 64 } |
59 | 65 |
60 bool IsValid() const { | 66 bool IsValid() const { |
61 return has_been_bound_ && !IsDeleted(); | 67 return has_been_bound_ && !IsDeleted(); |
62 } | 68 } |
63 | 69 |
(...skipping 14 matching lines...) Expand all Loading... |
78 void SetInfo( | 84 void SetInfo( |
79 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { | 85 GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { |
80 samples_ = samples; | 86 samples_ = samples; |
81 internal_format_ = internalformat; | 87 internal_format_ = internalformat; |
82 width_ = width; | 88 width_ = width; |
83 height_ = height; | 89 height_ = height; |
84 cleared_ = false; | 90 cleared_ = false; |
85 } | 91 } |
86 | 92 |
87 void MarkAsDeleted() { | 93 void MarkAsDeleted() { |
88 deleted_ = true; | 94 client_id_ = 0; |
89 } | 95 } |
90 | 96 |
91 // RenderbufferManager that owns this Renderbuffer. | 97 // RenderbufferManager that owns this Renderbuffer. |
92 RenderbufferManager* manager_; | 98 RenderbufferManager* manager_; |
93 | 99 |
94 bool deleted_; | 100 // Client side renderbuffer id. |
| 101 GLuint client_id_; |
95 | 102 |
96 // Service side renderbuffer id. | 103 // Service side renderbuffer id. |
97 GLuint service_id_; | 104 GLuint service_id_; |
98 | 105 |
99 // Whether this renderbuffer has been cleared | 106 // Whether this renderbuffer has been cleared |
100 bool cleared_; | 107 bool cleared_; |
101 | 108 |
102 // Whether this renderbuffer has ever been bound. | 109 // Whether this renderbuffer has ever been bound. |
103 bool has_been_bound_; | 110 bool has_been_bound_; |
104 | 111 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 | 152 |
146 // Creates a Renderbuffer for the given renderbuffer ids. | 153 // Creates a Renderbuffer for the given renderbuffer ids. |
147 void CreateRenderbuffer(GLuint client_id, GLuint service_id); | 154 void CreateRenderbuffer(GLuint client_id, GLuint service_id); |
148 | 155 |
149 // Gets the renderbuffer for the given renderbuffer id. | 156 // Gets the renderbuffer for the given renderbuffer id. |
150 Renderbuffer* GetRenderbuffer(GLuint client_id); | 157 Renderbuffer* GetRenderbuffer(GLuint client_id); |
151 | 158 |
152 // Removes a renderbuffer for the given renderbuffer id. | 159 // Removes a renderbuffer for the given renderbuffer id. |
153 void RemoveRenderbuffer(GLuint client_id); | 160 void RemoveRenderbuffer(GLuint client_id); |
154 | 161 |
155 // Gets a client id for a given service id. | |
156 bool GetClientId(GLuint service_id, GLuint* client_id) const; | |
157 | |
158 size_t mem_represented() const { | 162 size_t mem_represented() const { |
159 return memory_tracker_->GetMemRepresented(); | 163 return memory_tracker_->GetMemRepresented(); |
160 } | 164 } |
161 | 165 |
162 static bool ComputeEstimatedRenderbufferSize( | 166 static bool ComputeEstimatedRenderbufferSize( |
163 int width, int height, int samples, int internal_format, uint32* size); | 167 int width, int height, int samples, int internal_format, uint32* size); |
164 static GLenum InternalRenderbufferFormatToImplFormat(GLenum impl_format); | 168 static GLenum InternalRenderbufferFormatToImplFormat(GLenum impl_format); |
165 | 169 |
166 private: | 170 private: |
167 friend class Renderbuffer; | 171 friend class Renderbuffer; |
(...skipping 18 matching lines...) Expand all Loading... |
186 typedef base::hash_map<GLuint, scoped_refptr<Renderbuffer> > RenderbufferMap; | 190 typedef base::hash_map<GLuint, scoped_refptr<Renderbuffer> > RenderbufferMap; |
187 RenderbufferMap renderbuffers_; | 191 RenderbufferMap renderbuffers_; |
188 | 192 |
189 DISALLOW_COPY_AND_ASSIGN(RenderbufferManager); | 193 DISALLOW_COPY_AND_ASSIGN(RenderbufferManager); |
190 }; | 194 }; |
191 | 195 |
192 } // namespace gles2 | 196 } // namespace gles2 |
193 } // namespace gpu | 197 } // namespace gpu |
194 | 198 |
195 #endif // GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ | 199 #endif // GPU_COMMAND_BUFFER_SERVICE_RENDERBUFFER_MANAGER_H_ |
OLD | NEW |