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

Unified Diff: gpu/command_buffer/service/texture_manager.cc

Issue 2429005: Adds tracking of number of unrenderable textures so... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/texture_manager.cc
===================================================================
--- gpu/command_buffer/service/texture_manager.cc (revision 48721)
+++ gpu/command_buffer/service/texture_manager.cc (working copy)
@@ -263,7 +263,8 @@
max_texture_size)),
max_cube_map_levels_(ComputeMipMapCount(max_cube_map_texture_size,
max_cube_map_texture_size,
- max_cube_map_texture_size)) {
+ max_cube_map_texture_size)),
+ num_unrenderable_textures_(0) {
default_texture_2d_ = TextureInfo::Ref(new TextureInfo(0));
SetInfoTarget(default_texture_2d_, GL_TEXTURE_2D);
default_texture_2d_->SetLevelInfo(
@@ -297,12 +298,65 @@
(target != GL_TEXTURE_2D || (depth == 1));
}
+void TextureManager::SetLevelInfo(
+ TextureManager::TextureInfo* info,
+ GLenum target,
+ GLint level,
+ GLint internal_format,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLenum format,
+ GLenum type) {
+ DCHECK(info);
+ DCHECK(!info->IsDeleted());
+ if (!info->CanRender()) {
+ --num_unrenderable_textures_;
+ }
+ info->SetLevelInfo(
+ target, level, internal_format, width, height, depth,
+ border, format, type);
+ if (!info->CanRender()) {
+ ++num_unrenderable_textures_;
+ }
+}
+
+void TextureManager::SetParameter(
+ TextureManager::TextureInfo* info, GLenum pname, GLint param) {
+ DCHECK(info);
+ DCHECK(!info->IsDeleted());
+ if (!info->CanRender()) {
+ --num_unrenderable_textures_;
+ }
+ info->SetParameter(pname, param);
+ if (!info->CanRender()) {
+ ++num_unrenderable_textures_;
+ }
+}
+
+bool TextureManager::MarkMipmapsGenerated(TextureManager::TextureInfo* info) {
+ DCHECK(info);
+ DCHECK(!info->IsDeleted());
+ if (!info->CanRender()) {
+ --num_unrenderable_textures_;
+ }
+ bool result = info->MarkMipmapsGenerated();
+ if (!info->CanRender()) {
+ ++num_unrenderable_textures_;
+ }
+ return result;
+}
+
TextureManager::TextureInfo* TextureManager::CreateTextureInfo(
GLuint client_id, GLuint service_id) {
TextureInfo::Ref info(new TextureInfo(service_id));
std::pair<TextureInfoMap::iterator, bool> result =
texture_infos_.insert(std::make_pair(client_id, info));
DCHECK(result.second);
+ if (!info->CanRender()) {
+ ++num_unrenderable_textures_;
+ }
return info.get();
}
@@ -315,7 +369,11 @@
void TextureManager::RemoveTextureInfo(GLuint client_id) {
TextureInfoMap::iterator it = texture_infos_.find(client_id);
if (it != texture_infos_.end()) {
- it->second->MarkAsDeleted();
+ TextureInfo* info = it->second;
+ if (!info->CanRender()) {
+ --num_unrenderable_textures_;
+ }
+ info->MarkAsDeleted();
texture_infos_.erase(it);
}
}

Powered by Google App Engine
This is Rietveld 408576698