| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/gpu/browser_gpu_memory_buffer_manager.h" | 5 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/synchronization/waitable_event.h" | 10 #include "base/synchronization/waitable_event.h" |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 enable_native_gpu_memory_buffers = false; | 123 enable_native_gpu_memory_buffers = false; |
| 124 force_native_gpu_read_write_formats = false; | 124 force_native_gpu_read_write_formats = false; |
| 125 } | 125 } |
| 126 | 126 |
| 127 if (enable_native_gpu_memory_buffers) { | 127 if (enable_native_gpu_memory_buffers) { |
| 128 const gfx::BufferFormat kNativeFormats[] = { | 128 const gfx::BufferFormat kNativeFormats[] = { |
| 129 gfx::BufferFormat::R_8, gfx::BufferFormat::RGBA_4444, | 129 gfx::BufferFormat::R_8, gfx::BufferFormat::RGBA_4444, |
| 130 gfx::BufferFormat::RGBA_8888, gfx::BufferFormat::BGRA_8888, | 130 gfx::BufferFormat::RGBA_8888, gfx::BufferFormat::BGRA_8888, |
| 131 gfx::BufferFormat::UYVY_422, gfx::BufferFormat::YUV_420_BIPLANAR}; | 131 gfx::BufferFormat::UYVY_422, gfx::BufferFormat::YUV_420_BIPLANAR}; |
| 132 const gfx::BufferUsage kNativeUsages[] = { | 132 const gfx::BufferUsage kNativeUsages[] = { |
| 133 gfx::BufferUsage::GPU_READ, gfx::BufferUsage::GPU_READ_WRITE, | 133 gfx::BufferUsage::GPU_READ, gfx::BufferUsage::SCANOUT, |
| 134 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, | 134 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, |
| 135 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT}; | 135 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT}; |
| 136 for (auto& format : kNativeFormats) { | 136 for (auto& format : kNativeFormats) { |
| 137 for (auto& usage : kNativeUsages) { | 137 for (auto& usage : kNativeUsages) { |
| 138 if (IsNativeGpuMemoryBufferFactoryConfigurationSupported(format, usage)) | 138 if (IsNativeGpuMemoryBufferFactoryConfigurationSupported(format, usage)) |
| 139 configurations.insert(std::make_pair(format, usage)); | 139 configurations.insert(std::make_pair(format, usage)); |
| 140 } | 140 } |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 | 143 |
| 144 if (force_native_gpu_read_write_formats) { | 144 if (force_native_gpu_read_write_formats) { |
| 145 const gfx::BufferFormat kGPUReadWriteFormats[] = { | 145 const gfx::BufferFormat kGPUReadWriteFormats[] = { |
| 146 gfx::BufferFormat::RGBA_8888, gfx::BufferFormat::RGBX_8888, | 146 gfx::BufferFormat::RGBA_8888, gfx::BufferFormat::RGBX_8888, |
| 147 gfx::BufferFormat::BGRA_8888, gfx::BufferFormat::BGRX_8888, | 147 gfx::BufferFormat::BGRA_8888, gfx::BufferFormat::BGRX_8888, |
| 148 gfx::BufferFormat::UYVY_422, gfx::BufferFormat::YUV_420_BIPLANAR}; | 148 gfx::BufferFormat::UYVY_422, gfx::BufferFormat::YUV_420_BIPLANAR}; |
| 149 for (auto& format : kGPUReadWriteFormats) { | 149 for (auto& format : kGPUReadWriteFormats) { |
| 150 if (IsNativeGpuMemoryBufferFactoryConfigurationSupported( | 150 if (IsNativeGpuMemoryBufferFactoryConfigurationSupported( |
| 151 format, gfx::BufferUsage::GPU_READ_WRITE)) { | 151 format, gfx::BufferUsage::SCANOUT)) { |
| 152 configurations.insert( | 152 configurations.insert( |
| 153 std::make_pair(format, gfx::BufferUsage::GPU_READ_WRITE)); | 153 std::make_pair(format, gfx::BufferUsage::SCANOUT)); |
| 154 } | 154 } |
| 155 } | 155 } |
| 156 } | 156 } |
| 157 | 157 |
| 158 return configurations; | 158 return configurations; |
| 159 } | 159 } |
| 160 | 160 |
| 161 BrowserGpuMemoryBufferManager* g_gpu_memory_buffer_manager = nullptr; | 161 BrowserGpuMemoryBufferManager* g_gpu_memory_buffer_manager = nullptr; |
| 162 | 162 |
| 163 } // namespace | 163 } // namespace |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 return request.result.Pass(); | 284 return request.result.Pass(); |
| 285 } | 285 } |
| 286 | 286 |
| 287 scoped_ptr<gfx::GpuMemoryBuffer> | 287 scoped_ptr<gfx::GpuMemoryBuffer> |
| 288 BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForScanout( | 288 BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForScanout( |
| 289 const gfx::Size& size, | 289 const gfx::Size& size, |
| 290 gfx::BufferFormat format, | 290 gfx::BufferFormat format, |
| 291 int32 surface_id) { | 291 int32 surface_id) { |
| 292 DCHECK_GT(surface_id, 0); | 292 DCHECK_GT(surface_id, 0); |
| 293 return AllocateGpuMemoryBufferForSurface( | 293 return AllocateGpuMemoryBufferForSurface( |
| 294 size, format, gfx::BufferUsage::GPU_READ_WRITE, surface_id); | 294 size, format, gfx::BufferUsage::SCANOUT, surface_id); |
| 295 } | 295 } |
| 296 | 296 |
| 297 void BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForChildProcess( | 297 void BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForChildProcess( |
| 298 gfx::GpuMemoryBufferId id, | 298 gfx::GpuMemoryBufferId id, |
| 299 const gfx::Size& size, | 299 const gfx::Size& size, |
| 300 gfx::BufferFormat format, | 300 gfx::BufferFormat format, |
| 301 gfx::BufferUsage usage, | 301 gfx::BufferUsage usage, |
| 302 base::ProcessHandle child_process_handle, | 302 base::ProcessHandle child_process_handle, |
| 303 int child_client_id, | 303 int child_client_id, |
| 304 const AllocationCallback& callback) { | 304 const AllocationCallback& callback) { |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 return gpu_client_tracing_id_; | 738 return gpu_client_tracing_id_; |
| 739 } | 739 } |
| 740 | 740 |
| 741 // In normal cases, |client_id| is a child process id, so we can perform | 741 // In normal cases, |client_id| is a child process id, so we can perform |
| 742 // the standard conversion. | 742 // the standard conversion. |
| 743 return ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId( | 743 return ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId( |
| 744 client_id); | 744 client_id); |
| 745 } | 745 } |
| 746 | 746 |
| 747 } // namespace content | 747 } // namespace content |
| OLD | NEW |