| Index: gpu/command_buffer/service/texture_manager.cc
|
| diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc
|
| index ce546152c3d932c40f72890ac3f0b7d675c48467..7f6dadb6b7099ce7ce9bc6053fab7f6f246b75a9 100644
|
| --- a/gpu/command_buffer/service/texture_manager.cc
|
| +++ b/gpu/command_buffer/service/texture_manager.cc
|
| @@ -82,8 +82,10 @@ void TextureManager::Destroy(bool have_context) {
|
| glDeleteTextures(arraysize(black_texture_ids_), black_texture_ids_);
|
| }
|
|
|
| - DCHECK_EQ(0u, mem_represented_);
|
| - UpdateMemRepresented();
|
| + DCHECK_EQ(0u, memory_tracker_managed_->GetMemRepresented());
|
| + DCHECK_EQ(0u, memory_tracker_unmanaged_->GetMemRepresented());
|
| + memory_tracker_managed_->UpdateMemRepresented();
|
| + memory_tracker_unmanaged_->UpdateMemRepresented();
|
| }
|
|
|
| TextureManager::TextureInfo::TextureInfo(TextureManager* manager,
|
| @@ -99,6 +101,7 @@ TextureManager::TextureInfo::TextureInfo(TextureManager* manager,
|
| wrap_s_(GL_REPEAT),
|
| wrap_t_(GL_REPEAT),
|
| usage_(GL_NONE),
|
| + tracking_pool_(MemoryTracker::kUnmanaged),
|
| max_level_set_(-1),
|
| texture_complete_(false),
|
| cube_complete_(false),
|
| @@ -692,7 +695,10 @@ TextureManager::TextureManager(
|
| FeatureInfo* feature_info,
|
| GLint max_texture_size,
|
| GLint max_cube_map_texture_size)
|
| - : texture_memory_tracker_(new MemoryTypeTracker(memory_tracker)),
|
| + : memory_tracker_managed_(
|
| + new MemoryTypeTracker(memory_tracker, MemoryTracker::kManaged)),
|
| + memory_tracker_unmanaged_(
|
| + new MemoryTypeTracker(memory_tracker, MemoryTracker::kUnmanaged)),
|
| feature_info_(feature_info),
|
| max_texture_size_(max_texture_size),
|
| max_cube_map_texture_size_(max_cube_map_texture_size),
|
| @@ -706,19 +712,15 @@ TextureManager::TextureManager(
|
| num_unsafe_textures_(0),
|
| num_uncleared_mips_(0),
|
| texture_info_count_(0),
|
| - mem_represented_(0),
|
| have_context_(true) {
|
| for (int ii = 0; ii < kNumDefaultTextures; ++ii) {
|
| black_texture_ids_[ii] = 0;
|
| }
|
| }
|
|
|
| -void TextureManager::UpdateMemRepresented() {
|
| - texture_memory_tracker_->UpdateMemRepresented(mem_represented_);
|
| -}
|
| -
|
| bool TextureManager::Initialize() {
|
| - UpdateMemRepresented();
|
| + memory_tracker_managed_->UpdateMemRepresented();
|
| + memory_tracker_unmanaged_->UpdateMemRepresented();
|
|
|
| // TODO(gman): The default textures have to be real textures, not the 0
|
| // texture because we simulate non shared resources on top of shared
|
| @@ -912,12 +914,13 @@ void TextureManager::SetLevelInfo(
|
| }
|
| num_uncleared_mips_ -= info->num_uncleared_mips();
|
| DCHECK_GE(num_uncleared_mips_, 0);
|
| - mem_represented_ -= info->estimated_size();
|
| +
|
| + GetMemTracker(info->tracking_pool_)->TrackMemFree(info->estimated_size());
|
| info->SetLevelInfo(
|
| feature_info_, target, level, internal_format, width, height, depth,
|
| border, format, type, cleared);
|
| - mem_represented_ += info->estimated_size();
|
| - UpdateMemRepresented();
|
| + GetMemTracker(info->tracking_pool_)->TrackMemAlloc(info->estimated_size());
|
| + GetMemTracker(info->tracking_pool_)->UpdateMemRepresented();
|
|
|
| num_uncleared_mips_ += info->num_uncleared_mips();
|
| if (!info->CanRender(feature_info_)) {
|
| @@ -1069,10 +1072,10 @@ bool TextureManager::MarkMipmapsGenerated(TextureManager::TextureInfo* info) {
|
| }
|
| num_uncleared_mips_ -= info->num_uncleared_mips();
|
| DCHECK_GE(num_uncleared_mips_, 0);
|
| - mem_represented_ -= info->estimated_size();
|
| + GetMemTracker(info->tracking_pool_)->TrackMemFree(info->estimated_size());
|
| bool result = info->MarkMipmapsGenerated(feature_info_);
|
| - mem_represented_ += info->estimated_size();
|
| - UpdateMemRepresented();
|
| + GetMemTracker(info->tracking_pool_)->TrackMemAlloc(info->estimated_size());
|
| + GetMemTracker(info->tracking_pool_)->UpdateMemRepresented();
|
|
|
| num_uncleared_mips_ += info->num_uncleared_mips();
|
| if (!info->CanRender(feature_info_)) {
|
| @@ -1132,8 +1135,25 @@ void TextureManager::StopTracking(TextureManager::TextureInfo* texture) {
|
| }
|
| num_uncleared_mips_ -= texture->num_uncleared_mips();
|
| DCHECK_GE(num_uncleared_mips_, 0);
|
| - mem_represented_ -= texture->estimated_size();
|
| - UpdateMemRepresented();
|
| + GetMemTracker(texture->tracking_pool_)->TrackMemFree(
|
| + texture->estimated_size());
|
| + GetMemTracker(texture->tracking_pool_)->UpdateMemRepresented();
|
| +}
|
| +
|
| +MemoryTypeTracker* TextureManager::GetMemTracker(
|
| + MemoryTracker::Pool tracking_pool) {
|
| + switch(tracking_pool) {
|
| + case MemoryTracker::kManaged:
|
| + return memory_tracker_managed_.get();
|
| + break;
|
| + case MemoryTracker::kUnmanaged:
|
| + return memory_tracker_unmanaged_.get();
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + NOTREACHED();
|
| + return NULL;
|
| }
|
|
|
| bool TextureManager::GetClientId(GLuint service_id, GLuint* client_id) const {
|
|
|