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

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

Issue 633773002: Optimized Texture::Update() function. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 return min_filter_ != GL_NEAREST && min_filter_ != GL_LINEAR; 269 return min_filter_ != GL_NEAREST && min_filter_ != GL_LINEAR;
270 } 270 }
271 271
272 // True if this texture meets all the GLES2 criteria for rendering. 272 // True if this texture meets all the GLES2 criteria for rendering.
273 // See section 3.8.2 of the GLES2 spec. 273 // See section 3.8.2 of the GLES2 spec.
274 bool CanRender(const FeatureInfo* feature_info) const; 274 bool CanRender(const FeatureInfo* feature_info) const;
275 275
276 // Returns true if mipmaps can be generated by GL. 276 // Returns true if mipmaps can be generated by GL.
277 bool CanGenerateMipmaps(const FeatureInfo* feature_info) const; 277 bool CanGenerateMipmaps(const FeatureInfo* feature_info) const;
278 278
279 // Returns true if any of the texture dimensions are not a power of two.
280 static bool TextureIsNPOT(GLsizei width, GLsizei height, GLsizei depth);
281
282 // Returns true if texture face is complete relative to the first face.
283 static bool TextureFaceComplete(const Texture::LevelInfo& first_face,
284 size_t face_index,
285 GLenum target,
286 GLenum internal_format,
287 GLsizei width,
288 GLsizei height,
289 GLsizei depth,
290 GLenum format,
291 GLenum type);
292
293 // Returns true if texture mip level is complete relative to first level.
294 static bool TextureMipComplete(const Texture::LevelInfo& level0_face,
295 GLenum target,
296 GLint level,
297 GLenum internal_format,
298 GLsizei width,
299 GLsizei height,
300 GLsizei depth,
301 GLenum format,
302 GLenum type);
303
279 // Sets the Texture's target 304 // Sets the Texture's target
280 // Parameters: 305 // Parameters:
281 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or 306 // target: GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP or
282 // GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_RECTANGLE_ARB 307 // GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_RECTANGLE_ARB
283 // max_levels: The maximum levels this type of target can have. 308 // max_levels: The maximum levels this type of target can have.
284 void SetTarget( 309 void SetTarget(
285 const FeatureInfo* feature_info, GLenum target, GLint max_levels); 310 const FeatureInfo* feature_info, GLenum target, GLint max_levels);
286 311
287 // Update info about this texture. 312 // Update info about this texture.
288 void Update(const FeatureInfo* feature_info); 313 void Update(const FeatureInfo* feature_info);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 347
323 // Increment the framebuffer state change count in all the managers 348 // Increment the framebuffer state change count in all the managers
324 // referencing this texture. 349 // referencing this texture.
325 void IncAllFramebufferStateChangeCount(); 350 void IncAllFramebufferStateChangeCount();
326 351
327 MailboxManager* mailbox_manager_; 352 MailboxManager* mailbox_manager_;
328 353
329 // Info about each face and level of texture. 354 // Info about each face and level of texture.
330 std::vector<std::vector<LevelInfo> > level_infos_; 355 std::vector<std::vector<LevelInfo> > level_infos_;
331 356
357 // Number of mip levels for each level.
358 std::vector<GLsizei> num_mip_levels_;
vmiura 2014/10/07 00:13:03 Is this number of mip levels for each face? If so
David Yen 2014/10/09 20:20:16 Done.
359
332 // The texture refs that point to this Texture. 360 // The texture refs that point to this Texture.
333 typedef std::set<TextureRef*> RefSet; 361 typedef std::set<TextureRef*> RefSet;
334 RefSet refs_; 362 RefSet refs_;
335 363
336 // The single TextureRef that accounts for memory for this texture. Must be 364 // The single TextureRef that accounts for memory for this texture. Must be
337 // one of refs_. 365 // one of refs_.
338 TextureRef* memory_tracking_ref_; 366 TextureRef* memory_tracking_ref_;
339 367
340 // The id of the texure 368 // The id of the texure
341 GLuint service_id_; 369 GLuint service_id_;
342 370
343 // Whether all renderable mips of this texture have been cleared. 371 // Whether all renderable mips of this texture have been cleared.
344 bool cleared_; 372 bool cleared_;
345 373
346 int num_uncleared_mips_; 374 int num_uncleared_mips_;
375 int num_npot_faces_;
376 int num_complete_faces_;
377 int num_incomplete_mips_;
347 378
348 // The target. 0 if unset, otherwise GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP. 379 // The target. 0 if unset, otherwise GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP.
349 GLenum target_; 380 GLenum target_;
350 381
351 // Texture parameters. 382 // Texture parameters.
352 GLenum min_filter_; 383 GLenum min_filter_;
353 GLenum mag_filter_; 384 GLenum mag_filter_;
354 GLenum wrap_s_; 385 GLenum wrap_s_;
355 GLenum wrap_t_; 386 GLenum wrap_t_;
356 GLenum usage_; 387 GLenum usage_;
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 private: 855 private:
825 DecoderTextureState* texture_state_; 856 DecoderTextureState* texture_state_;
826 base::TimeTicks begin_time_; 857 base::TimeTicks begin_time_;
827 DISALLOW_COPY_AND_ASSIGN(ScopedTextureUploadTimer); 858 DISALLOW_COPY_AND_ASSIGN(ScopedTextureUploadTimer);
828 }; 859 };
829 860
830 } // namespace gles2 861 } // namespace gles2
831 } // namespace gpu 862 } // namespace gpu
832 863
833 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 864 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW
« no previous file with comments | « no previous file | gpu/command_buffer/service/texture_manager.cc » ('j') | gpu/command_buffer/service/texture_manager.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698