| 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/renderbuffer_manager.h" | 5 #include "gpu/command_buffer/service/renderbuffer_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 #include <stdint.h> |
| 9 |
| 7 #include "base/logging.h" | 10 #include "base/logging.h" |
| 8 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
| 9 #include "base/thread_task_runner_handle.h" | 12 #include "base/thread_task_runner_handle.h" |
| 10 #include "base/trace_event/memory_dump_manager.h" | 13 #include "base/trace_event/memory_dump_manager.h" |
| 11 #include "base/trace_event/trace_event.h" | 14 #include "base/trace_event/trace_event.h" |
| 12 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 15 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 13 #include "gpu/command_buffer/service/feature_info.h" | 16 #include "gpu/command_buffer/service/feature_info.h" |
| 14 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 17 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 15 #include "gpu/command_buffer/service/memory_tracking.h" | 18 #include "gpu/command_buffer/service/memory_tracking.h" |
| 16 #include "ui/gl/gl_implementation.h" | 19 #include "ui/gl/gl_implementation.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 // a Renderbuffer belonging to this. | 74 // a Renderbuffer belonging to this. |
| 72 CHECK_EQ(renderbuffer_count_, 0u); | 75 CHECK_EQ(renderbuffer_count_, 0u); |
| 73 | 76 |
| 74 DCHECK_EQ(0, num_uncleared_renderbuffers_); | 77 DCHECK_EQ(0, num_uncleared_renderbuffers_); |
| 75 | 78 |
| 76 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( | 79 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
| 77 this); | 80 this); |
| 78 } | 81 } |
| 79 | 82 |
| 80 size_t Renderbuffer::EstimatedSize() { | 83 size_t Renderbuffer::EstimatedSize() { |
| 81 uint32 size = 0; | 84 uint32_t size = 0; |
| 82 manager_->ComputeEstimatedRenderbufferSize( | 85 manager_->ComputeEstimatedRenderbufferSize( |
| 83 width_, height_, samples_, internal_format_, &size); | 86 width_, height_, samples_, internal_format_, &size); |
| 84 return size; | 87 return size; |
| 85 } | 88 } |
| 86 | 89 |
| 87 | 90 |
| 88 size_t Renderbuffer::GetSignatureSize() const { | 91 size_t Renderbuffer::GetSignatureSize() const { |
| 89 return sizeof(RenderbufferTag) + sizeof(RenderbufferSignature); | 92 return sizeof(RenderbufferTag) + sizeof(RenderbufferSignature); |
| 90 } | 93 } |
| 91 | 94 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 | 195 |
| 193 void RenderbufferManager::RemoveRenderbuffer(GLuint client_id) { | 196 void RenderbufferManager::RemoveRenderbuffer(GLuint client_id) { |
| 194 RenderbufferMap::iterator it = renderbuffers_.find(client_id); | 197 RenderbufferMap::iterator it = renderbuffers_.find(client_id); |
| 195 if (it != renderbuffers_.end()) { | 198 if (it != renderbuffers_.end()) { |
| 196 Renderbuffer* renderbuffer = it->second.get(); | 199 Renderbuffer* renderbuffer = it->second.get(); |
| 197 renderbuffer->MarkAsDeleted(); | 200 renderbuffer->MarkAsDeleted(); |
| 198 renderbuffers_.erase(it); | 201 renderbuffers_.erase(it); |
| 199 } | 202 } |
| 200 } | 203 } |
| 201 | 204 |
| 202 bool RenderbufferManager::ComputeEstimatedRenderbufferSize(int width, | 205 bool RenderbufferManager::ComputeEstimatedRenderbufferSize( |
| 203 int height, | 206 int width, |
| 204 int samples, | 207 int height, |
| 205 int internal_format, | 208 int samples, |
| 206 uint32* size) const { | 209 int internal_format, |
| 210 uint32_t* size) const { |
| 207 DCHECK(size); | 211 DCHECK(size); |
| 208 | 212 |
| 209 uint32 temp = 0; | 213 uint32_t temp = 0; |
| 210 if (!SafeMultiplyUint32(width, height, &temp)) { | 214 if (!SafeMultiplyUint32(width, height, &temp)) { |
| 211 return false; | 215 return false; |
| 212 } | 216 } |
| 213 if (!SafeMultiplyUint32(temp, samples, &temp)) { | 217 if (!SafeMultiplyUint32(temp, samples, &temp)) { |
| 214 return false; | 218 return false; |
| 215 } | 219 } |
| 216 GLenum impl_format = InternalRenderbufferFormatToImplFormat(internal_format); | 220 GLenum impl_format = InternalRenderbufferFormatToImplFormat(internal_format); |
| 217 if (!SafeMultiplyUint32( | 221 if (!SafeMultiplyUint32( |
| 218 temp, GLES2Util::RenderbufferBytesPerPixel(impl_format), &temp)) { | 222 temp, GLES2Util::RenderbufferBytesPerPixel(impl_format), &temp)) { |
| 219 return false; | 223 return false; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 auto guid = gfx::GetGLRenderbufferGUIDForTracing( | 267 auto guid = gfx::GetGLRenderbufferGUIDForTracing( |
| 264 memory_tracker_->ShareGroupTracingGUID(), client_renderbuffer_id); | 268 memory_tracker_->ShareGroupTracingGUID(), client_renderbuffer_id); |
| 265 pmd->CreateSharedGlobalAllocatorDump(guid); | 269 pmd->CreateSharedGlobalAllocatorDump(guid); |
| 266 pmd->AddOwnershipEdge(dump->guid(), guid); | 270 pmd->AddOwnershipEdge(dump->guid(), guid); |
| 267 } | 271 } |
| 268 return true; | 272 return true; |
| 269 } | 273 } |
| 270 | 274 |
| 271 } // namespace gles2 | 275 } // namespace gles2 |
| 272 } // namespace gpu | 276 } // namespace gpu |
| OLD | NEW |