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

Side by Side Diff: gpu/command_buffer/service/texture_manager.h

Issue 22824009: Remove StreamTextureManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_TEXTURE_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/containers/hash_tables.h" 13 #include "base/containers/hash_tables.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
16 #include "base/observer_list.h" 16 #include "base/observer_list.h"
17 #include "gpu/command_buffer/service/async_pixel_transfer_delegate.h" 17 #include "gpu/command_buffer/service/async_pixel_transfer_delegate.h"
18 #include "gpu/command_buffer/service/gl_utils.h" 18 #include "gpu/command_buffer/service/gl_utils.h"
19 #include "gpu/command_buffer/service/memory_tracking.h" 19 #include "gpu/command_buffer/service/memory_tracking.h"
20 #include "gpu/gpu_export.h" 20 #include "gpu/gpu_export.h"
21 #include "ui/gl/gl_image.h" 21 #include "ui/gl/gl_image.h"
22 22
23 namespace gpu { 23 namespace gpu {
24 24
25 class StreamTextureManager;
26
27 namespace gles2 { 25 namespace gles2 {
28 26
29 class GLES2Decoder; 27 class GLES2Decoder;
30 class Display; 28 class Display;
31 class ErrorState; 29 class ErrorState;
32 class FeatureInfo; 30 class FeatureInfo;
33 class FramebufferManager; 31 class FramebufferManager;
34 class MailboxManager; 32 class MailboxManager;
35 class TextureManager; 33 class TextureManager;
36 class TextureRef; 34 class TextureRef;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 66
69 int num_uncleared_mips() const { 67 int num_uncleared_mips() const {
70 return num_uncleared_mips_; 68 return num_uncleared_mips_;
71 } 69 }
72 70
73 uint32 estimated_size() const { 71 uint32 estimated_size() const {
74 return estimated_size_; 72 return estimated_size_;
75 } 73 }
76 74
77 bool CanRenderTo() const { 75 bool CanRenderTo() const {
78 return !stream_texture_ && target_ != GL_TEXTURE_EXTERNAL_OES; 76 return target_ != GL_TEXTURE_EXTERNAL_OES;
79 } 77 }
80 78
81 // The service side OpenGL id of the texture. 79 // The service side OpenGL id of the texture.
82 GLuint service_id() const { 80 GLuint service_id() const {
83 return service_id_; 81 return service_id_;
84 } 82 }
85 83
86 void SetServiceId(GLuint service_id) { 84 void SetServiceId(GLuint service_id) {
87 DCHECK(service_id); 85 DCHECK(service_id);
88 service_id_ = service_id; 86 service_id_ = service_id;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 132
135 void AttachToFramebuffer() { 133 void AttachToFramebuffer() {
136 ++framebuffer_attachment_count_; 134 ++framebuffer_attachment_count_;
137 } 135 }
138 136
139 void DetachFromFramebuffer() { 137 void DetachFromFramebuffer() {
140 DCHECK_GT(framebuffer_attachment_count_, 0); 138 DCHECK_GT(framebuffer_attachment_count_, 0);
141 --framebuffer_attachment_count_; 139 --framebuffer_attachment_count_;
142 } 140 }
143 141
144 bool IsStreamTexture() const {
145 return stream_texture_;
146 }
147
148 void SetImmutable(bool immutable) { 142 void SetImmutable(bool immutable) {
149 immutable_ = immutable; 143 immutable_ = immutable;
150 } 144 }
151 145
152 bool IsImmutable() const { 146 bool IsImmutable() const {
153 return immutable_; 147 return immutable_;
154 } 148 }
155 149
156 // Whether a particular level/face is cleared. 150 // Whether a particular level/face is cleared.
157 bool IsLevelCleared(GLenum target, GLint level) const; 151 bool IsLevelCleared(GLenum target, GLint level) const;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 // same format, all the same dimensions and all width = height. 223 // same format, all the same dimensions and all width = height.
230 bool cube_complete() const { 224 bool cube_complete() const {
231 return cube_complete_; 225 return cube_complete_;
232 } 226 }
233 227
234 // Whether or not this texture is a non-power-of-two texture. 228 // Whether or not this texture is a non-power-of-two texture.
235 bool npot() const { 229 bool npot() const {
236 return npot_; 230 return npot_;
237 } 231 }
238 232
239 void SetStreamTexture(bool stream_texture) {
240 stream_texture_ = stream_texture;
241 UpdateCanRenderCondition();
242 }
243
244 // Marks a particular level as cleared or uncleared. 233 // Marks a particular level as cleared or uncleared.
245 void SetLevelCleared(GLenum target, GLint level, bool cleared); 234 void SetLevelCleared(GLenum target, GLint level, bool cleared);
246 235
247 // Updates the cleared flag for this texture by inspecting all the mips. 236 // Updates the cleared flag for this texture by inspecting all the mips.
248 void UpdateCleared(); 237 void UpdateCleared();
249 238
250 // Clears any renderable uncleared levels. 239 // Clears any renderable uncleared levels.
251 // Returns false if a GL error was generated. 240 // Returns false if a GL error was generated.
252 bool ClearRenderableLevels(GLES2Decoder* decoder); 241 bool ClearRenderableLevels(GLES2Decoder* decoder);
253 242
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 351
363 // Whether or not this texture is non-power-of-two 352 // Whether or not this texture is non-power-of-two
364 bool npot_; 353 bool npot_;
365 354
366 // Whether this texture has ever been bound. 355 // Whether this texture has ever been bound.
367 bool has_been_bound_; 356 bool has_been_bound_;
368 357
369 // The number of framebuffers this texture is attached to. 358 // The number of framebuffers this texture is attached to.
370 int framebuffer_attachment_count_; 359 int framebuffer_attachment_count_;
371 360
372 // Whether this is a special streaming texture.
373 bool stream_texture_;
374
375 // Whether the texture is immutable and no further changes to the format 361 // Whether the texture is immutable and no further changes to the format
376 // or dimensions of the texture object can be made. 362 // or dimensions of the texture object can be made.
377 bool immutable_; 363 bool immutable_;
378 364
379 // Size in bytes this texture is assumed to take in memory. 365 // Size in bytes this texture is assumed to take in memory.
380 uint32 estimated_size_; 366 uint32 estimated_size_;
381 367
382 // Cache of the computed CanRenderCondition flag. 368 // Cache of the computed CanRenderCondition flag.
383 CanRenderCondition can_render_condition_; 369 CanRenderCondition can_render_condition_;
384 370
(...skipping 24 matching lines...) Expand all
409 395
410 private: 396 private:
411 friend class base::RefCounted<TextureRef>; 397 friend class base::RefCounted<TextureRef>;
412 friend class Texture; 398 friend class Texture;
413 friend class TextureManager; 399 friend class TextureManager;
414 400
415 ~TextureRef(); 401 ~TextureRef();
416 const TextureManager* manager() const { return manager_; } 402 const TextureManager* manager() const { return manager_; }
417 TextureManager* manager() { return manager_; } 403 TextureManager* manager() { return manager_; }
418 void reset_client_id() { client_id_ = 0; } 404 void reset_client_id() { client_id_ = 0; }
419 void set_is_stream_texture_owner(bool owner) {
420 is_stream_texture_owner_ = owner;
421 }
422 bool is_stream_texture_owner() const { return is_stream_texture_owner_; }
423 405
424 TextureManager* manager_; 406 TextureManager* manager_;
425 Texture* texture_; 407 Texture* texture_;
426 GLuint client_id_; 408 GLuint client_id_;
427 bool is_stream_texture_owner_;
428 409
429 DISALLOW_COPY_AND_ASSIGN(TextureRef); 410 DISALLOW_COPY_AND_ASSIGN(TextureRef);
430 }; 411 };
431 412
432 // This class keeps track of the textures and their sizes so we can do NPOT and 413 // This class keeps track of the textures and their sizes so we can do NPOT and
433 // texture complete checking. 414 // texture complete checking.
434 // 415 //
435 // NOTE: To support shared resources an instance of this class will need to be 416 // NOTE: To support shared resources an instance of this class will need to be
436 // shared by multiple GLES2Decoders. 417 // shared by multiple GLES2Decoders.
437 class GPU_EXPORT TextureManager { 418 class GPU_EXPORT TextureManager {
(...skipping 24 matching lines...) Expand all
462 TextureManager(MemoryTracker* memory_tracker, 443 TextureManager(MemoryTracker* memory_tracker,
463 FeatureInfo* feature_info, 444 FeatureInfo* feature_info,
464 GLsizei max_texture_size, 445 GLsizei max_texture_size,
465 GLsizei max_cube_map_texture_size); 446 GLsizei max_cube_map_texture_size);
466 ~TextureManager(); 447 ~TextureManager();
467 448
468 void set_framebuffer_manager(FramebufferManager* manager) { 449 void set_framebuffer_manager(FramebufferManager* manager) {
469 framebuffer_manager_ = manager; 450 framebuffer_manager_ = manager;
470 } 451 }
471 452
472 void set_stream_texture_manager(StreamTextureManager* manager) {
473 stream_texture_manager_ = manager;
474 }
475
476 // Init the texture manager. 453 // Init the texture manager.
477 bool Initialize(); 454 bool Initialize();
478 455
479 // Must call before destruction. 456 // Must call before destruction.
480 void Destroy(bool have_context); 457 void Destroy(bool have_context);
481 458
482 // Returns the maximum number of levels. 459 // Returns the maximum number of levels.
483 GLint MaxLevelsForTarget(GLenum target) const { 460 GLint MaxLevelsForTarget(GLenum target) const {
484 switch (target) { 461 switch (target) {
485 case GL_TEXTURE_2D: 462 case GL_TEXTURE_2D:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 } 500 }
524 501
525 // Sets the Texture's target 502 // Sets the Texture's target
526 // Parameters: 503 // Parameters:
527 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP 504 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP
528 // max_levels: The maximum levels this type of target can have. 505 // max_levels: The maximum levels this type of target can have.
529 void SetTarget( 506 void SetTarget(
530 TextureRef* ref, 507 TextureRef* ref,
531 GLenum target); 508 GLenum target);
532 509
533 // Marks a texture as a stream texture, and the ref as the stream texture
534 // owner.
535 void SetStreamTexture(TextureRef* ref, bool stream_texture);
536
537 // Whether the TextureRef is the stream texture owner.
538 bool IsStreamTextureOwner(TextureRef* ref);
539
540 // Set the info for a particular level in a TexureInfo. 510 // Set the info for a particular level in a TexureInfo.
541 void SetLevelInfo( 511 void SetLevelInfo(
542 TextureRef* ref, 512 TextureRef* ref,
543 GLenum target, 513 GLenum target,
544 GLint level, 514 GLint level,
545 GLenum internal_format, 515 GLenum internal_format,
546 GLsizei width, 516 GLsizei width,
547 GLsizei height, 517 GLsizei height,
548 GLsizei depth, 518 GLsizei depth,
549 GLint border, 519 GLint border,
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 Texture::CanRenderCondition new_condition); 659 Texture::CanRenderCondition new_condition);
690 void IncFramebufferStateChangeCount(); 660 void IncFramebufferStateChangeCount();
691 661
692 MemoryTypeTracker* GetMemTracker(GLenum texture_pool); 662 MemoryTypeTracker* GetMemTracker(GLenum texture_pool);
693 scoped_ptr<MemoryTypeTracker> memory_tracker_managed_; 663 scoped_ptr<MemoryTypeTracker> memory_tracker_managed_;
694 scoped_ptr<MemoryTypeTracker> memory_tracker_unmanaged_; 664 scoped_ptr<MemoryTypeTracker> memory_tracker_unmanaged_;
695 665
696 scoped_refptr<FeatureInfo> feature_info_; 666 scoped_refptr<FeatureInfo> feature_info_;
697 667
698 FramebufferManager* framebuffer_manager_; 668 FramebufferManager* framebuffer_manager_;
699 StreamTextureManager* stream_texture_manager_;
700 669
701 // Info for each texture in the system. 670 // Info for each texture in the system.
702 typedef base::hash_map<GLuint, scoped_refptr<TextureRef> > TextureMap; 671 typedef base::hash_map<GLuint, scoped_refptr<TextureRef> > TextureMap;
703 TextureMap textures_; 672 TextureMap textures_;
704 673
705 GLsizei max_texture_size_; 674 GLsizei max_texture_size_;
706 GLsizei max_cube_map_texture_size_; 675 GLsizei max_cube_map_texture_size_;
707 GLint max_levels_; 676 GLint max_levels_;
708 GLint max_cube_map_levels_; 677 GLint max_cube_map_levels_;
709 678
(...skipping 17 matching lines...) Expand all
727 696
728 ObserverList<DestructionObserver> destruction_observers_; 697 ObserverList<DestructionObserver> destruction_observers_;
729 698
730 DISALLOW_COPY_AND_ASSIGN(TextureManager); 699 DISALLOW_COPY_AND_ASSIGN(TextureManager);
731 }; 700 };
732 701
733 } // namespace gles2 702 } // namespace gles2
734 } // namespace gpu 703 } // namespace gpu
735 704
736 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 705 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698