OLD | NEW |
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 #include "gpu/command_buffer/service/buffer_manager.h" | 5 #include "gpu/command_buffer/service/buffer_manager.h" |
6 #include "base/debug/trace_event.h" | 6 #include "base/debug/trace_event.h" |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 10 #include "gpu/command_buffer/service/memory_tracking.h" |
10 | 11 |
11 namespace gpu { | 12 namespace gpu { |
12 namespace gles2 { | 13 namespace gles2 { |
13 | 14 |
14 BufferManager::BufferManager() | 15 BufferManager::BufferManager(MemoryTracker* memory_tracker) |
15 : allow_buffers_on_multiple_targets_(false), | 16 : buffer_memory_tracker_(new MemoryTypeTracker( |
| 17 memory_tracker, |
| 18 "BufferManager", |
| 19 "BufferMemory")), |
| 20 allow_buffers_on_multiple_targets_(false), |
16 mem_represented_(0), | 21 mem_represented_(0), |
17 last_reported_mem_represented_(1), | |
18 buffer_info_count_(0), | 22 buffer_info_count_(0), |
19 have_context_(true) { | 23 have_context_(true) { |
20 UpdateMemRepresented(); | 24 UpdateMemRepresented(); |
21 } | 25 } |
22 | 26 |
23 BufferManager::~BufferManager() { | 27 BufferManager::~BufferManager() { |
24 DCHECK(buffer_infos_.empty()); | 28 DCHECK(buffer_infos_.empty()); |
25 CHECK_EQ(buffer_info_count_, 0u); | 29 CHECK_EQ(buffer_info_count_, 0u); |
26 } | 30 } |
27 | 31 |
28 void BufferManager::Destroy(bool have_context) { | 32 void BufferManager::Destroy(bool have_context) { |
29 have_context_ = have_context; | 33 have_context_ = have_context; |
30 buffer_infos_.clear(); | 34 buffer_infos_.clear(); |
31 DCHECK_EQ(0u, mem_represented_); | 35 DCHECK_EQ(0u, mem_represented_); |
32 UpdateMemRepresented(); | 36 UpdateMemRepresented(); |
33 } | 37 } |
34 | 38 |
35 void BufferManager::UpdateMemRepresented() { | 39 void BufferManager::UpdateMemRepresented() { |
36 if (mem_represented_ != last_reported_mem_represented_) { | 40 buffer_memory_tracker_->UpdateMemRepresented(mem_represented_); |
37 last_reported_mem_represented_ = mem_represented_; | |
38 TRACE_COUNTER_ID1( | |
39 "BufferManager", "BufferMemory", this, mem_represented_); | |
40 } | |
41 } | 41 } |
42 | 42 |
43 void BufferManager::CreateBufferInfo(GLuint client_id, GLuint service_id) { | 43 void BufferManager::CreateBufferInfo(GLuint client_id, GLuint service_id) { |
44 BufferInfo::Ref buffer(new BufferInfo(this, service_id)); | 44 BufferInfo::Ref buffer(new BufferInfo(this, service_id)); |
45 std::pair<BufferInfoMap::iterator, bool> result = | 45 std::pair<BufferInfoMap::iterator, bool> result = |
46 buffer_infos_.insert(std::make_pair(client_id, buffer)); | 46 buffer_infos_.insert(std::make_pair(client_id, buffer)); |
47 DCHECK(result.second); | 47 DCHECK(result.second); |
48 } | 48 } |
49 | 49 |
50 BufferManager::BufferInfo* BufferManager::GetBufferInfo( | 50 BufferManager::BufferInfo* BufferManager::GetBufferInfo( |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 if (info->target() == 0) { | 237 if (info->target() == 0) { |
238 info->set_target(target); | 238 info->set_target(target); |
239 } | 239 } |
240 return true; | 240 return true; |
241 } | 241 } |
242 | 242 |
243 } // namespace gles2 | 243 } // namespace gles2 |
244 } // namespace gpu | 244 } // namespace gpu |
245 | 245 |
246 | 246 |
OLD | NEW |