Commit 609d7ae8 authored by ccameron@chromium.org's avatar ccameron@chromium.org

Fix transfer buffer accounting

BUG=141550


Review URL: https://chromiumcodereview.appspot.com/10825288

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150987 0039d316-1c4b-4281-b951-d872f2087c98
parent 1332623f
...@@ -25,11 +25,12 @@ TransferBufferManager::TransferBufferManager() ...@@ -25,11 +25,12 @@ TransferBufferManager::TransferBufferManager()
TransferBufferManager::~TransferBufferManager() { TransferBufferManager::~TransferBufferManager() {
for (size_t i = 0; i < registered_objects_.size(); ++i) { for (size_t i = 0; i < registered_objects_.size(); ++i) {
if (registered_objects_[i].shared_memory) { if (registered_objects_[i].shared_memory) {
DCHECK(shared_memory_bytes_allocated_ >= registered_objects_[i].size);
shared_memory_bytes_allocated_ -= registered_objects_[i].size; shared_memory_bytes_allocated_ -= registered_objects_[i].size;
delete registered_objects_[i].shared_memory; delete registered_objects_[i].shared_memory;
} }
} }
// TODO(gman): Should we report 0 bytes to TRACE here? DCHECK(!shared_memory_bytes_allocated_);
} }
bool TransferBufferManager::Initialize() { bool TransferBufferManager::Initialize() {
...@@ -42,10 +43,6 @@ int32 TransferBufferManager::CreateTransferBuffer( ...@@ -42,10 +43,6 @@ int32 TransferBufferManager::CreateTransferBuffer(
if (!buffer.CreateAnonymous(size)) if (!buffer.CreateAnonymous(size))
return -1; return -1;
shared_memory_bytes_allocated_ += size;
TRACE_COUNTER_ID1(
"CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_);
return RegisterTransferBuffer(&buffer, size, id_request); return RegisterTransferBuffer(&buffer, size, id_request);
} }
...@@ -81,6 +78,10 @@ int32 TransferBufferManager::RegisterTransferBuffer( ...@@ -81,6 +78,10 @@ int32 TransferBufferManager::RegisterTransferBuffer(
buffer.size = size; buffer.size = size;
buffer.shared_memory = duped_shared_memory.release(); buffer.shared_memory = duped_shared_memory.release();
shared_memory_bytes_allocated_ += size;
TRACE_COUNTER_ID1(
"CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_);
// If caller requested specific id, first try to use id_request. // If caller requested specific id, first try to use id_request.
if (id_request != -1) { if (id_request != -1) {
int32 cur_size = static_cast<int32>(registered_objects_.size()); int32 cur_size = static_cast<int32>(registered_objects_.size());
...@@ -120,6 +121,7 @@ void TransferBufferManager::DestroyTransferBuffer(int32 handle) { ...@@ -120,6 +121,7 @@ void TransferBufferManager::DestroyTransferBuffer(int32 handle) {
if (static_cast<size_t>(handle) >= registered_objects_.size()) if (static_cast<size_t>(handle) >= registered_objects_.size())
return; return;
DCHECK(shared_memory_bytes_allocated_ >= registered_objects_[handle].size);
shared_memory_bytes_allocated_ -= registered_objects_[handle].size; shared_memory_bytes_allocated_ -= registered_objects_[handle].size;
TRACE_COUNTER_ID1( TRACE_COUNTER_ID1(
"CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_); "CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment