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_FRAMEBUFFER_MANAGER_H_ | 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_FRAMEBUFFER_MANAGER_H_ |
6 #define GPU_COMMAND_BUFFER_SERVICE_FRAMEBUFFER_MANAGER_H_ | 6 #define GPU_COMMAND_BUFFER_SERVICE_FRAMEBUFFER_MANAGER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
11 #include "base/containers/hash_tables.h" | 11 #include "base/containers/hash_tables.h" |
12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "gpu/command_buffer/service/context_group.h" |
14 #include "gpu/command_buffer/service/gl_utils.h" | 15 #include "gpu/command_buffer/service/gl_utils.h" |
15 #include "gpu/gpu_export.h" | 16 #include "gpu/gpu_export.h" |
16 | 17 |
17 namespace gpu { | 18 namespace gpu { |
18 namespace gles2 { | 19 namespace gles2 { |
19 | 20 |
20 class FramebufferManager; | 21 class FramebufferManager; |
21 class Renderbuffer; | 22 class Renderbuffer; |
22 class RenderbufferManager; | 23 class RenderbufferManager; |
23 class Texture; | 24 class Texture; |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 public: | 234 public: |
234 TextureDetachObserver(); | 235 TextureDetachObserver(); |
235 virtual ~TextureDetachObserver(); | 236 virtual ~TextureDetachObserver(); |
236 | 237 |
237 virtual void OnTextureRefDetachedFromFramebuffer(TextureRef* texture) = 0; | 238 virtual void OnTextureRefDetachedFromFramebuffer(TextureRef* texture) = 0; |
238 | 239 |
239 private: | 240 private: |
240 DISALLOW_COPY_AND_ASSIGN(TextureDetachObserver); | 241 DISALLOW_COPY_AND_ASSIGN(TextureDetachObserver); |
241 }; | 242 }; |
242 | 243 |
243 FramebufferManager(uint32 max_draw_buffers, uint32 max_color_attachments); | 244 FramebufferManager(uint32 max_draw_buffers, uint32 max_color_attachments, |
| 245 ContextGroup::ContextType context_type); |
244 ~FramebufferManager(); | 246 ~FramebufferManager(); |
245 | 247 |
246 // Must call before destruction. | 248 // Must call before destruction. |
247 void Destroy(bool have_context); | 249 void Destroy(bool have_context); |
248 | 250 |
249 // Creates a Framebuffer for the given framebuffer. | 251 // Creates a Framebuffer for the given framebuffer. |
250 void CreateFramebuffer(GLuint client_id, GLuint service_id); | 252 void CreateFramebuffer(GLuint client_id, GLuint service_id); |
251 | 253 |
252 // Gets the framebuffer info for the given framebuffer. | 254 // Gets the framebuffer info for the given framebuffer. |
253 Framebuffer* GetFramebuffer(GLuint client_id); | 255 Framebuffer* GetFramebuffer(GLuint client_id); |
(...skipping 24 matching lines...) Expand all Loading... |
278 } | 280 } |
279 | 281 |
280 void RemoveObserver(TextureDetachObserver* observer) { | 282 void RemoveObserver(TextureDetachObserver* observer) { |
281 texture_detach_observers_.erase( | 283 texture_detach_observers_.erase( |
282 std::remove(texture_detach_observers_.begin(), | 284 std::remove(texture_detach_observers_.begin(), |
283 texture_detach_observers_.end(), | 285 texture_detach_observers_.end(), |
284 observer), | 286 observer), |
285 texture_detach_observers_.end()); | 287 texture_detach_observers_.end()); |
286 } | 288 } |
287 | 289 |
| 290 ContextGroup::ContextType context_type() const { |
| 291 return context_type_; |
| 292 } |
| 293 |
288 private: | 294 private: |
289 friend class Framebuffer; | 295 friend class Framebuffer; |
290 | 296 |
291 void StartTracking(Framebuffer* framebuffer); | 297 void StartTracking(Framebuffer* framebuffer); |
292 void StopTracking(Framebuffer* framebuffer); | 298 void StopTracking(Framebuffer* framebuffer); |
293 | 299 |
294 void OnTextureRefDetached(TextureRef* texture); | 300 void OnTextureRefDetached(TextureRef* texture); |
295 | 301 |
296 // Info for each framebuffer in the system. | 302 // Info for each framebuffer in the system. |
297 typedef base::hash_map<GLuint, scoped_refptr<Framebuffer> > | 303 typedef base::hash_map<GLuint, scoped_refptr<Framebuffer> > |
298 FramebufferMap; | 304 FramebufferMap; |
299 FramebufferMap framebuffers_; | 305 FramebufferMap framebuffers_; |
300 | 306 |
301 // Incremented anytime anything changes that might effect framebuffer | 307 // Incremented anytime anything changes that might effect framebuffer |
302 // state. | 308 // state. |
303 unsigned framebuffer_state_change_count_; | 309 unsigned framebuffer_state_change_count_; |
304 | 310 |
305 // Counts the number of Framebuffer allocated with 'this' as its manager. | 311 // Counts the number of Framebuffer allocated with 'this' as its manager. |
306 // Allows to check no Framebuffer will outlive this. | 312 // Allows to check no Framebuffer will outlive this. |
307 unsigned int framebuffer_count_; | 313 unsigned int framebuffer_count_; |
308 | 314 |
309 bool have_context_; | 315 bool have_context_; |
310 | 316 |
311 uint32 max_draw_buffers_; | 317 uint32 max_draw_buffers_; |
312 uint32 max_color_attachments_; | 318 uint32 max_color_attachments_; |
313 | 319 |
| 320 ContextGroup::ContextType context_type_; |
| 321 |
314 typedef std::vector<TextureDetachObserver*> TextureDetachObserverVector; | 322 typedef std::vector<TextureDetachObserver*> TextureDetachObserverVector; |
315 TextureDetachObserverVector texture_detach_observers_; | 323 TextureDetachObserverVector texture_detach_observers_; |
316 | 324 |
317 DISALLOW_COPY_AND_ASSIGN(FramebufferManager); | 325 DISALLOW_COPY_AND_ASSIGN(FramebufferManager); |
318 }; | 326 }; |
319 | 327 |
320 } // namespace gles2 | 328 } // namespace gles2 |
321 } // namespace gpu | 329 } // namespace gpu |
322 | 330 |
323 #endif // GPU_COMMAND_BUFFER_SERVICE_FRAMEBUFFER_MANAGER_H_ | 331 #endif // GPU_COMMAND_BUFFER_SERVICE_FRAMEBUFFER_MANAGER_H_ |
OLD | NEW |