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

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

Issue 7518016: Revert 94743 - Allow the renderer process to map textures from one context into another. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:mergeinfo
Merged /trunk/src/o3d/gpu/command_buffer/service/texture_manager.h:r32866-32958
Merged /branches/chrome_webkit_merge_branch/o3d/gpu/command_buffer/service/texture_manager.h:r69-2775
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 <vector> 8 #include <vector>
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/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/memory/weak_ptr.h"
14 #include "gpu/command_buffer/service/gl_utils.h" 13 #include "gpu/command_buffer/service/gl_utils.h"
15 14
16 namespace gpu { 15 namespace gpu {
17 namespace gles2 { 16 namespace gles2 {
18 17
19 class FeatureInfo; 18 class FeatureInfo;
20 19
21 // This class keeps track of the textures and their sizes so we can do NPOT and 20 // This class keeps track of the textures and their sizes so we can do NPOT and
22 // texture complete checking. 21 // texture complete checking.
23 // 22 //
24 // NOTE: To support shared resources an instance of this class will need to be 23 // NOTE: To support shared resources an instance of this class will need to be
25 // shared by multiple GLES2Decoders. 24 // shared by multiple GLES2Decoders.
26 class TextureManager : public base::SupportsWeakPtr<TextureManager> { 25 class TextureManager {
27 public: 26 public:
28 // Info about Textures currently in the system. 27 // Info about Textures currently in the system.
29 class TextureInfo : public base::RefCounted<TextureInfo> { 28 class TextureInfo : public base::RefCounted<TextureInfo> {
30 public: 29 public:
31 typedef scoped_refptr<TextureInfo> Ref; 30 typedef scoped_refptr<TextureInfo> Ref;
32 31
33 explicit TextureInfo(GLuint service_id) 32 explicit TextureInfo(GLuint service_id)
34 : service_id_(service_id), 33 : service_id_(service_id),
35 deleted_(false), 34 deleted_(false),
36 target_(0), 35 target_(0),
37 min_filter_(GL_NEAREST_MIPMAP_LINEAR), 36 min_filter_(GL_NEAREST_MIPMAP_LINEAR),
38 mag_filter_(GL_LINEAR), 37 mag_filter_(GL_LINEAR),
39 wrap_s_(GL_REPEAT), 38 wrap_s_(GL_REPEAT),
40 wrap_t_(GL_REPEAT), 39 wrap_t_(GL_REPEAT),
41 max_level_set_(-1), 40 max_level_set_(-1),
42 texture_complete_(false), 41 texture_complete_(false),
43 cube_complete_(false), 42 cube_complete_(false),
44 npot_(false), 43 npot_(false),
45 has_been_bound_(false), 44 has_been_bound_(false),
46 framebuffer_attachment_count_(0) { 45 framebuffer_attachment_count_(0),
46 owned_(true) {
47 } 47 }
48 48
49 GLenum min_filter() const { 49 GLenum min_filter() const {
50 return min_filter_; 50 return min_filter_;
51 } 51 }
52 52
53 GLenum mag_filter() const { 53 GLenum mag_filter() const {
54 return mag_filter_; 54 return mag_filter_;
55 } 55 }
56 56
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 // same format, all the same dimensions and all width = height. 89 // same format, all the same dimensions and all width = height.
90 bool cube_complete() const { 90 bool cube_complete() const {
91 return cube_complete_; 91 return cube_complete_;
92 } 92 }
93 93
94 // Whether or not this texture is a non-power-of-two texture. 94 // Whether or not this texture is a non-power-of-two texture.
95 bool npot() const { 95 bool npot() const {
96 return npot_; 96 return npot_;
97 } 97 }
98 98
99 TextureManager* owner() const {
100 return owner_.get();
101 }
102
103 // Returns true if mipmaps can be generated by GL. 99 // Returns true if mipmaps can be generated by GL.
104 bool CanGenerateMipmaps(const FeatureInfo* feature_info) const; 100 bool CanGenerateMipmaps(const FeatureInfo* feature_info) const;
105 101
106 // Get the width and height for a particular level. Returns false if level 102 // Get the width and height for a particular level. Returns false if level
107 // does not exist. 103 // does not exist.
108 bool GetLevelSize( 104 bool GetLevelSize(
109 GLint face, GLint level, GLsizei* width, GLsizei* height) const; 105 GLint face, GLint level, GLsizei* width, GLsizei* height) const;
110 106
111 // Get the type of a level. Returns false if level does not exist. 107 // Get the type of a level. Returns false if level does not exist.
112 bool GetLevelType( 108 bool GetLevelType(
(...skipping 12 matching lines...) Expand all
125 GLint yoffset, 121 GLint yoffset,
126 GLsizei width, 122 GLsizei width,
127 GLsizei height, 123 GLsizei height,
128 GLenum format, 124 GLenum format,
129 GLenum type) const; 125 GLenum type) const;
130 126
131 bool IsValid() const { 127 bool IsValid() const {
132 return target() && !IsDeleted(); 128 return target() && !IsDeleted();
133 } 129 }
134 130
131 void SetNotOwned() {
132 owned_ = false;
133 }
134
135 bool IsAttachedToFramebuffer() const { 135 bool IsAttachedToFramebuffer() const {
136 return framebuffer_attachment_count_ != 0; 136 return framebuffer_attachment_count_ != 0;
137 } 137 }
138 138
139 void AttachToFramebuffer() { 139 void AttachToFramebuffer() {
140 ++framebuffer_attachment_count_; 140 ++framebuffer_attachment_count_;
141 } 141 }
142 142
143 void DetachFromFramebuffer() { 143 void DetachFromFramebuffer() {
144 DCHECK(framebuffer_attachment_count_ > 0); 144 DCHECK(framebuffer_attachment_count_ > 0);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 243
244 // Whether or not this texture is non-power-of-two 244 // Whether or not this texture is non-power-of-two
245 bool npot_; 245 bool npot_;
246 246
247 // Whether this texture has ever been bound. 247 // Whether this texture has ever been bound.
248 bool has_been_bound_; 248 bool has_been_bound_;
249 249
250 // The number of framebuffers this texture is attached to. 250 // The number of framebuffers this texture is attached to.
251 int framebuffer_attachment_count_; 251 int framebuffer_attachment_count_;
252 252
253 // The framebuffer manager that controls the lifetime of this framebuffer 253 // Whether the associated context group owns this texture and should delete
254 // or NULL if it has been deleted. 254 // it.
255 base::WeakPtr<TextureManager> owner_; 255 bool owned_;
256 256
257 DISALLOW_COPY_AND_ASSIGN(TextureInfo); 257 DISALLOW_COPY_AND_ASSIGN(TextureInfo);
258 }; 258 };
259 259
260 TextureManager(GLsizei max_texture_size, 260 TextureManager(GLsizei max_texture_size,
261 GLsizei max_cube_map_texture_size); 261 GLsizei max_cube_map_texture_size);
262 ~TextureManager(); 262 ~TextureManager();
263 263
264 // Init the texture manager. 264 // Init the texture manager.
265 bool Initialize(const FeatureInfo* feature_info); 265 bool Initialize(const FeatureInfo* feature_info);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 const FeatureInfo* feature_info, 331 const FeatureInfo* feature_info,
332 TextureManager::TextureInfo* info); 332 TextureManager::TextureInfo* info);
333 333
334 // Creates a new texture info. 334 // Creates a new texture info.
335 TextureInfo* CreateTextureInfo( 335 TextureInfo* CreateTextureInfo(
336 const FeatureInfo* feature_info, GLuint client_id, GLuint service_id); 336 const FeatureInfo* feature_info, GLuint client_id, GLuint service_id);
337 337
338 // Gets the texture info for the given texture. 338 // Gets the texture info for the given texture.
339 TextureInfo* GetTextureInfo(GLuint client_id); 339 TextureInfo* GetTextureInfo(GLuint client_id);
340 340
341 // Adds a texture info for a texture owned by another texture
342 // manager.
343 void AddTextureInfo(const FeatureInfo* feature_info,
344 GLuint client_id,
345 TextureInfo* info);
346
347 // Removes a texture info. 341 // Removes a texture info.
348 void RemoveTextureInfo(const FeatureInfo* feature_info, GLuint client_id); 342 void RemoveTextureInfo(const FeatureInfo* feature_info, GLuint client_id);
349 343
350 // Gets a client id for a given service id. 344 // Gets a client id for a given service id.
351 bool GetClientId(GLuint service_id, GLuint* client_id) const; 345 bool GetClientId(GLuint service_id, GLuint* client_id) const;
352 346
353 TextureInfo* GetDefaultTextureInfo(GLenum target) { 347 TextureInfo* GetDefaultTextureInfo(GLenum target) {
354 switch (target) { 348 switch (target) {
355 case GL_TEXTURE_2D: 349 case GL_TEXTURE_2D:
356 return default_texture_2d_; 350 return default_texture_2d_;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 TextureInfo::Ref default_texture_cube_map_; 400 TextureInfo::Ref default_texture_cube_map_;
407 TextureInfo::Ref default_texture_external_oes_; 401 TextureInfo::Ref default_texture_external_oes_;
408 402
409 DISALLOW_COPY_AND_ASSIGN(TextureManager); 403 DISALLOW_COPY_AND_ASSIGN(TextureManager);
410 }; 404 };
411 405
412 } // namespace gles2 406 } // namespace gles2
413 } // namespace gpu 407 } // namespace gpu
414 408
415 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 409 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gpu_scheduler.cc ('k') | gpu/command_buffer/service/texture_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698