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

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

Issue 3150026: Fixes for the default texture.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 DISALLOW_COPY_AND_ASSIGN(TextureInfo); 210 DISALLOW_COPY_AND_ASSIGN(TextureInfo);
211 }; 211 };
212 212
213 TextureManager(bool npot_ok, 213 TextureManager(bool npot_ok,
214 bool enable_float_linear, 214 bool enable_float_linear,
215 bool enable_half_float_linear, 215 bool enable_half_float_linear,
216 GLsizei max_texture_size, 216 GLsizei max_texture_size,
217 GLsizei max_cube_map_texture_size); 217 GLsizei max_cube_map_texture_size);
218 ~TextureManager(); 218 ~TextureManager();
219 219
220 // Init the texture manager.
221 bool Initialize();
222
220 // Must call before destruction. 223 // Must call before destruction.
221 void Destroy(bool have_context); 224 void Destroy(bool have_context);
222 225
223 // Whether or not npot textures can render. 226 // Whether or not npot textures can render.
224 bool npot_ok() const { 227 bool npot_ok() const {
225 return npot_ok_; 228 return npot_ok_;
226 } 229 }
227 230
228 // Whether float textures can have linear filtering. 231 // Whether float textures can have linear filtering.
229 bool enable_float_linear() const { 232 bool enable_float_linear() const {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 298
296 TextureInfo* GetDefaultTextureInfo(GLenum target) { 299 TextureInfo* GetDefaultTextureInfo(GLenum target) {
297 return target == GL_TEXTURE_2D ? default_texture_2d_ : 300 return target == GL_TEXTURE_2D ? default_texture_2d_ :
298 default_texture_cube_map_; 301 default_texture_cube_map_;
299 } 302 }
300 303
301 bool HaveUnrenderableTextures() const { 304 bool HaveUnrenderableTextures() const {
302 return num_unrenderable_textures_ > 0; 305 return num_unrenderable_textures_ > 0;
303 } 306 }
304 307
308 GLuint black_texture_id(GLenum target) const {
309 return target == GL_SAMPLER_2D ? black_2d_texture_id_ :
310 black_cube_texture_id_;
311 }
312
305 private: 313 private:
306 // Info for each texture in the system. 314 // Info for each texture in the system.
307 // TODO(gman): Choose a faster container. 315 // TODO(gman): Choose a faster container.
308 typedef std::map<GLuint, TextureInfo::Ref> TextureInfoMap; 316 typedef std::map<GLuint, TextureInfo::Ref> TextureInfoMap;
309 TextureInfoMap texture_infos_; 317 TextureInfoMap texture_infos_;
310 318
311 bool npot_ok_; 319 bool npot_ok_;
312 bool enable_float_linear_; 320 bool enable_float_linear_;
313 bool enable_half_float_linear_; 321 bool enable_half_float_linear_;
314 GLsizei max_texture_size_; 322 GLsizei max_texture_size_;
315 GLsizei max_cube_map_texture_size_; 323 GLsizei max_cube_map_texture_size_;
316 GLint max_levels_; 324 GLint max_levels_;
317 GLint max_cube_map_levels_; 325 GLint max_cube_map_levels_;
318 326
319 int num_unrenderable_textures_; 327 int num_unrenderable_textures_;
320 328
329 // Black (0,0,0,1) textures for when non-renderable textures are used.
330 // NOTE: There is no corresponding TextureInfo for these textures.
331 // TextureInfos are only for textures the client side can access.
332 GLuint black_2d_texture_id_;
333 GLuint black_cube_texture_id_;
334
321 // The default textures for each target (texture name = 0) 335 // The default textures for each target (texture name = 0)
322 TextureInfo::Ref default_texture_2d_; 336 TextureInfo::Ref default_texture_2d_;
323 TextureInfo::Ref default_texture_cube_map_; 337 TextureInfo::Ref default_texture_cube_map_;
324 338
325 DISALLOW_COPY_AND_ASSIGN(TextureManager); 339 DISALLOW_COPY_AND_ASSIGN(TextureManager);
326 }; 340 };
327 341
328 } // namespace gles2 342 } // namespace gles2
329 } // namespace gpu 343 } // namespace gpu
330 344
331 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 345 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
332 346
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/test_helper.cc ('k') | gpu/command_buffer/service/texture_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698