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

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

Issue 10106015: Allow textures to be moved from one GL context group to another. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 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 <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 "gpu/command_buffer/service/feature_info.h" 13 #include "gpu/command_buffer/service/feature_info.h"
14 #include "gpu/command_buffer/service/gl_utils.h" 14 #include "gpu/command_buffer/service/gl_utils.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 GLES2Decoder; 20 class GLES2Decoder;
21 class Display;
22 class TextureDefinition;
21 23
22 // This class keeps track of the textures and their sizes so we can do NPOT and 24 // This class keeps track of the textures and their sizes so we can do NPOT and
23 // texture complete checking. 25 // texture complete checking.
24 // 26 //
25 // NOTE: To support shared resources an instance of this class will need to be 27 // NOTE: To support shared resources an instance of this class will need to be
26 // shared by multiple GLES2Decoders. 28 // shared by multiple GLES2Decoders.
27 class GPU_EXPORT TextureManager { 29 class GPU_EXPORT TextureManager {
28 public: 30 public:
29 enum DefaultAndBlackTextures { 31 enum DefaultAndBlackTextures {
30 kTexture2D, 32 kTexture2D,
31 kCubeMap, 33 kCubeMap,
32 kExternalOES, 34 kExternalOES,
33 kRectangleARB, 35 kRectangleARB,
34 kNumDefaultTextures 36 kNumDefaultTextures
35 }; 37 };
36 38
37 // Info about Textures currently in the system. 39 // Info about Textures currently in the system.
38 class GPU_EXPORT TextureInfo : public base::RefCounted<TextureInfo> { 40 class GPU_EXPORT TextureInfo : public base::RefCounted<TextureInfo> {
39 public: 41 public:
40 typedef scoped_refptr<TextureInfo> Ref; 42 typedef scoped_refptr<TextureInfo> Ref;
41 43
42 TextureInfo(TextureManager* manager, GLuint service_id) 44 TextureInfo(TextureManager* manager, GLuint service_id);
43 : manager_(manager),
44 service_id_(service_id),
45 deleted_(false),
46 cleared_(true),
47 num_uncleared_mips_(0),
48 target_(0),
49 min_filter_(GL_NEAREST_MIPMAP_LINEAR),
50 mag_filter_(GL_LINEAR),
51 wrap_s_(GL_REPEAT),
52 wrap_t_(GL_REPEAT),
53 usage_(GL_NONE),
54 max_level_set_(-1),
55 texture_complete_(false),
56 cube_complete_(false),
57 npot_(false),
58 has_been_bound_(false),
59 framebuffer_attachment_count_(0),
60 owned_(true),
61 stream_texture_(false),
62 immutable_(false),
63 estimated_size_(0) {
64 if (manager_) {
65 manager_->StartTracking(this);
66 }
67 }
68 45
69 GLenum min_filter() const { 46 GLenum min_filter() const {
70 return min_filter_; 47 return min_filter_;
71 } 48 }
72 49
73 GLenum mag_filter() const { 50 GLenum mag_filter() const {
74 return mag_filter_; 51 return mag_filter_;
75 } 52 }
76 53
77 GLenum wrap_s() const { 54 GLenum wrap_s() const {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 internal_format(0), 193 internal_format(0),
217 width(0), 194 width(0),
218 height(0), 195 height(0),
219 depth(0), 196 depth(0),
220 border(0), 197 border(0),
221 format(0), 198 format(0),
222 type(0), 199 type(0),
223 estimated_size(0) { 200 estimated_size(0) {
224 } 201 }
225 202
203 LevelInfo(const LevelInfo& rhs)
204 : cleared(rhs.cleared),
205 target(rhs.target),
206 level(rhs.level),
207 internal_format(rhs.internal_format),
208 width(rhs.width),
209 height(rhs.height),
210 depth(rhs.depth),
211 border(rhs.border),
212 format(rhs.format),
213 type(rhs.type),
214 estimated_size(rhs.estimated_size) {
215 }
216
226 bool cleared; 217 bool cleared;
227 GLenum target; 218 GLenum target;
228 GLint level; 219 GLint level;
229 GLenum internal_format; 220 GLenum internal_format;
230 GLsizei width; 221 GLsizei width;
231 GLsizei height; 222 GLsizei height;
232 GLsizei depth; 223 GLsizei depth;
233 GLint border; 224 GLint border;
234 GLenum format; 225 GLenum format;
235 GLenum type; 226 GLenum type;
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 GLint level, 420 GLint level,
430 GLenum internal_format, 421 GLenum internal_format,
431 GLsizei width, 422 GLsizei width,
432 GLsizei height, 423 GLsizei height,
433 GLsizei depth, 424 GLsizei depth,
434 GLint border, 425 GLint border,
435 GLenum format, 426 GLenum format,
436 GLenum type, 427 GLenum type,
437 bool cleared); 428 bool cleared);
438 429
430 // Save the texture definition and leave it undefined.
431 TextureDefinition* Save(TextureInfo* info);
432
433 // Redefine all the levels from the texture definition.
434 bool Restore(TextureInfo* info,
435 TextureDefinition* definition);
436
439 // Sets a mip as cleared. 437 // Sets a mip as cleared.
440 void SetLevelCleared(TextureInfo* info, GLenum target, GLint level); 438 void SetLevelCleared(TextureInfo* info, GLenum target, GLint level);
441 439
442 // Sets a texture parameter of a TextureInfo 440 // Sets a texture parameter of a TextureInfo
443 // TODO(gman): Expand to SetParameteri,f,iv,fv 441 // TODO(gman): Expand to SetParameteri,f,iv,fv
444 bool SetParameter( 442 bool SetParameter(
445 TextureInfo* info, GLenum pname, GLint param); 443 TextureInfo* info, GLenum pname, GLint param);
446 444
447 // Makes each of the mip levels as though they were generated. 445 // Makes each of the mip levels as though they were generated.
448 // Returns false if that's not allowed for the given texture. 446 // Returns false if that's not allowed for the given texture.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 // The default textures for each target (texture name = 0) 552 // The default textures for each target (texture name = 0)
555 TextureInfo::Ref default_textures_[kNumDefaultTextures]; 553 TextureInfo::Ref default_textures_[kNumDefaultTextures];
556 554
557 DISALLOW_COPY_AND_ASSIGN(TextureManager); 555 DISALLOW_COPY_AND_ASSIGN(TextureManager);
558 }; 556 };
559 557
560 } // namespace gles2 558 } // namespace gles2
561 } // namespace gpu 559 } // namespace gpu
562 560
563 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 561 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698