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

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

Issue 1465993003: Ensured that texture completeness takes into account base and max level (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing compiler warnings Created 5 years 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
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 <algorithm> 8 #include <algorithm>
9 #include <list> 9 #include <list>
10 #include <set> 10 #include <set>
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 GLenum type; 265 GLenum type;
266 scoped_refptr<gl::GLImage> image; 266 scoped_refptr<gl::GLImage> image;
267 ImageState image_state; 267 ImageState image_state;
268 uint32 estimated_size; 268 uint32 estimated_size;
269 }; 269 };
270 270
271 struct FaceInfo { 271 struct FaceInfo {
272 FaceInfo(); 272 FaceInfo();
273 ~FaceInfo(); 273 ~FaceInfo();
274 274
275 // This is relative to base_level and max_level of a texture.
275 GLsizei num_mip_levels; 276 GLsizei num_mip_levels;
277 // This contains slots for all levels starting at 0.
276 std::vector<LevelInfo> level_infos; 278 std::vector<LevelInfo> level_infos;
277 }; 279 };
278 280
279 // Set the info for a particular level. 281 // Set the info for a particular level.
280 void SetLevelInfo(const FeatureInfo* feature_info, 282 void SetLevelInfo(const FeatureInfo* feature_info,
281 GLenum target, 283 GLenum target,
282 GLint level, 284 GLint level,
283 GLenum internal_format, 285 GLenum internal_format,
284 GLsizei width, 286 GLsizei width,
285 GLsizei height, 287 GLsizei height,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 static bool TextureFaceComplete(const Texture::LevelInfo& first_face, 357 static bool TextureFaceComplete(const Texture::LevelInfo& first_face,
356 size_t face_index, 358 size_t face_index,
357 GLenum target, 359 GLenum target,
358 GLenum internal_format, 360 GLenum internal_format,
359 GLsizei width, 361 GLsizei width,
360 GLsizei height, 362 GLsizei height,
361 GLsizei depth, 363 GLsizei depth,
362 GLenum format, 364 GLenum format,
363 GLenum type); 365 GLenum type);
364 366
365 // Returns true if texture mip level is complete relative to first level. 367 // Returns true if texture mip level is complete relative to base level.
366 static bool TextureMipComplete(const Texture::LevelInfo& level0_face, 368 // Note that level_diff = level - base_level.
369 static bool TextureMipComplete(const Texture::LevelInfo& base_level_face,
367 GLenum target, 370 GLenum target,
368 GLint level, 371 GLint level_diff,
369 GLenum internal_format, 372 GLenum internal_format,
370 GLsizei width, 373 GLsizei width,
371 GLsizei height, 374 GLsizei height,
372 GLsizei depth, 375 GLsizei depth,
373 GLenum format, 376 GLenum format,
374 GLenum type); 377 GLenum type);
375 378
376 // Sets the Texture's target 379 // Sets the Texture's target
377 // Parameters: 380 // Parameters:
378 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or 381 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 void UpdateCanRenderCondition(); 414 void UpdateCanRenderCondition();
412 415
413 // Updates the images count in all the managers referencing this 416 // Updates the images count in all the managers referencing this
414 // texture. 417 // texture.
415 void UpdateHasImages(); 418 void UpdateHasImages();
416 419
417 // Increment the framebuffer state change count in all the managers 420 // Increment the framebuffer state change count in all the managers
418 // referencing this texture. 421 // referencing this texture.
419 void IncAllFramebufferStateChangeCount(); 422 void IncAllFramebufferStateChangeCount();
420 423
424 void UpdateBaseLevel(GLint base_level);
425 void UpdateMaxLevel(GLint max_level);
426 void UpdateNumMipLevels();
427
421 MailboxManager* mailbox_manager_; 428 MailboxManager* mailbox_manager_;
422 429
423 // Info about each face and level of texture. 430 // Info about each face and level of texture.
424 std::vector<FaceInfo> face_infos_; 431 std::vector<FaceInfo> face_infos_;
425 432
426 // The texture refs that point to this Texture. 433 // The texture refs that point to this Texture.
427 typedef std::set<TextureRef*> RefSet; 434 typedef std::set<TextureRef*> RefSet;
428 RefSet refs_; 435 RefSet refs_;
429 436
430 // The single TextureRef that accounts for memory for this texture. Must be 437 // The single TextureRef that accounts for memory for this texture. Must be
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 private: 1019 private:
1013 DecoderTextureState* texture_state_; 1020 DecoderTextureState* texture_state_;
1014 base::TimeTicks begin_time_; 1021 base::TimeTicks begin_time_;
1015 DISALLOW_COPY_AND_ASSIGN(ScopedTextureUploadTimer); 1022 DISALLOW_COPY_AND_ASSIGN(ScopedTextureUploadTimer);
1016 }; 1023 };
1017 1024
1018 } // namespace gles2 1025 } // namespace gles2
1019 } // namespace gpu 1026 } // namespace gpu
1020 1027
1021 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 1028 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/texture_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698