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

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

Issue 7099007: Enforce RGB even on buggy drivers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add checks for reading GL_ALPHA_BITS etc. Created 9 years, 6 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
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
(...skipping 24 matching lines...) Expand all
35 target_(0), 35 target_(0),
36 min_filter_(GL_NEAREST_MIPMAP_LINEAR), 36 min_filter_(GL_NEAREST_MIPMAP_LINEAR),
37 mag_filter_(GL_LINEAR), 37 mag_filter_(GL_LINEAR),
38 wrap_s_(GL_REPEAT), 38 wrap_s_(GL_REPEAT),
39 wrap_t_(GL_REPEAT), 39 wrap_t_(GL_REPEAT),
40 max_level_set_(-1), 40 max_level_set_(-1),
41 texture_complete_(false), 41 texture_complete_(false),
42 cube_complete_(false), 42 cube_complete_(false),
43 npot_(false), 43 npot_(false),
44 has_been_bound_(false), 44 has_been_bound_(false),
45 framebuffer_attachment_count_(0),
45 owned_(true) { 46 owned_(true) {
46 } 47 }
47 48
48 GLenum min_filter() const { 49 GLenum min_filter() const {
49 return min_filter_; 50 return min_filter_;
50 } 51 }
51 52
52 GLenum mag_filter() const { 53 GLenum mag_filter() const {
53 return mag_filter_; 54 return mag_filter_;
54 } 55 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 GLenum type) const; 125 GLenum type) const;
125 126
126 bool IsValid() const { 127 bool IsValid() const {
127 return target() && !IsDeleted(); 128 return target() && !IsDeleted();
128 } 129 }
129 130
130 void SetNotOwned() { 131 void SetNotOwned() {
131 owned_ = false; 132 owned_ = false;
132 } 133 }
133 134
135 bool IsAttachedToFramebuffer() const {
136 return framebuffer_attachment_count_ != 0;
137 }
138
139 void AttachToFramebuffer() {
140 ++framebuffer_attachment_count_;
141 }
142
143 void DetachFromFramebuffer() {
144 DCHECK(framebuffer_attachment_count_ > 0);
145 --framebuffer_attachment_count_;
146 }
147
134 private: 148 private:
135 friend class TextureManager; 149 friend class TextureManager;
136 friend class base::RefCounted<TextureInfo>; 150 friend class base::RefCounted<TextureInfo>;
137 151
138 ~TextureInfo() { } 152 ~TextureInfo() { }
139 153
140 struct LevelInfo { 154 struct LevelInfo {
141 LevelInfo() 155 LevelInfo()
142 : valid(false), 156 : valid(false),
143 internal_format(0), 157 internal_format(0),
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 247
234 // Whether or not this texture is "cube complete" 248 // Whether or not this texture is "cube complete"
235 bool cube_complete_; 249 bool cube_complete_;
236 250
237 // Whether or not this texture is non-power-of-two 251 // Whether or not this texture is non-power-of-two
238 bool npot_; 252 bool npot_;
239 253
240 // Whether this texture has ever been bound. 254 // Whether this texture has ever been bound.
241 bool has_been_bound_; 255 bool has_been_bound_;
242 256
257 // The number of framebuffers this texture is attached to.
258 int framebuffer_attachment_count_;
259
243 // Whether the associated context group owns this texture and should delete 260 // Whether the associated context group owns this texture and should delete
244 // it. 261 // it.
245 bool owned_; 262 bool owned_;
246 263
247 DISALLOW_COPY_AND_ASSIGN(TextureInfo); 264 DISALLOW_COPY_AND_ASSIGN(TextureInfo);
248 }; 265 };
249 266
250 TextureManager(GLsizei max_texture_size, 267 TextureManager(GLsizei max_texture_size,
251 GLsizei max_cube_map_texture_size); 268 GLsizei max_cube_map_texture_size);
252 ~TextureManager(); 269 ~TextureManager();
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 TextureInfo::Ref default_texture_2d_; 375 TextureInfo::Ref default_texture_2d_;
359 TextureInfo::Ref default_texture_cube_map_; 376 TextureInfo::Ref default_texture_cube_map_;
360 377
361 DISALLOW_COPY_AND_ASSIGN(TextureManager); 378 DISALLOW_COPY_AND_ASSIGN(TextureManager);
362 }; 379 };
363 380
364 } // namespace gles2 381 } // namespace gles2
365 } // namespace gpu 382 } // namespace gpu
366 383
367 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 384 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698