Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: content/common/child_process_host_impl.cc

Issue 2496783002: gpu: Reuse existing code for shared memory allocation. (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "content/common/child_process_host_impl.h" 5 #include "content/common/child_process_host_impl.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/atomic_sequence_num.h" 9 #include "base/atomic_sequence_num.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 185
186 bool ChildProcessHostImpl::Send(IPC::Message* message) { 186 bool ChildProcessHostImpl::Send(IPC::Message* message) {
187 if (!channel_) { 187 if (!channel_) {
188 delete message; 188 delete message;
189 return false; 189 return false;
190 } 190 }
191 return channel_->Send(message); 191 return channel_->Send(message);
192 } 192 }
193 193
194 void ChildProcessHostImpl::AllocateSharedMemory( 194 void ChildProcessHostImpl::AllocateSharedMemory(
195 size_t buffer_size, base::ProcessHandle child_process_handle, 195 size_t buffer_size,
196 base::SharedMemoryHandle* shared_memory_handle) { 196 base::SharedMemoryHandle* shared_memory_handle) {
197 base::SharedMemory shared_buf; 197 base::SharedMemory shared_buf;
198 if (!shared_buf.CreateAnonymous(buffer_size)) { 198 if (!shared_buf.CreateAnonymous(buffer_size)) {
199 *shared_memory_handle = base::SharedMemory::NULLHandle(); 199 *shared_memory_handle = base::SharedMemory::NULLHandle();
200 NOTREACHED() << "Cannot create shared memory buffer"; 200 NOTREACHED() << "Cannot create shared memory buffer";
201 return; 201 return;
202 } 202 }
203 shared_buf.GiveToProcess(child_process_handle, shared_memory_handle); 203 *shared_memory_handle = shared_buf.TakeHandle();
204 } 204 }
205 205
206 int ChildProcessHostImpl::GenerateChildProcessUniqueId() { 206 int ChildProcessHostImpl::GenerateChildProcessUniqueId() {
207 // This function must be threadsafe. 207 // This function must be threadsafe.
208 // 208 //
209 // Historically, this function returned ids started with 1, so in several 209 // Historically, this function returned ids started with 1, so in several
210 // places in the code a value of 0 (rather than kInvalidUniqueID) was used as 210 // places in the code a value of 0 (rather than kInvalidUniqueID) was used as
211 // an invalid value. So we retain those semantics. 211 // an invalid value. So we retain those semantics.
212 int id = g_unique_id.GetNext() + 1; 212 int id = g_unique_id.GetNext() + 1;
213 213
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 delegate_->OnChildDisconnected(); 309 delegate_->OnChildDisconnected();
310 } 310 }
311 311
312 void ChildProcessHostImpl::OnBadMessageReceived(const IPC::Message& message) { 312 void ChildProcessHostImpl::OnBadMessageReceived(const IPC::Message& message) {
313 delegate_->OnBadMessageReceived(message); 313 delegate_->OnBadMessageReceived(message);
314 } 314 }
315 315
316 void ChildProcessHostImpl::OnAllocateSharedMemory( 316 void ChildProcessHostImpl::OnAllocateSharedMemory(
317 uint32_t buffer_size, 317 uint32_t buffer_size,
318 base::SharedMemoryHandle* handle) { 318 base::SharedMemoryHandle* handle) {
319 AllocateSharedMemory(buffer_size, peer_process_.Handle(), handle); 319 AllocateSharedMemory(buffer_size, handle);
320 } 320 }
321 321
322 void ChildProcessHostImpl::OnShutdownRequest() { 322 void ChildProcessHostImpl::OnShutdownRequest() {
323 if (delegate_->CanShutdown()) 323 if (delegate_->CanShutdown())
324 Send(new ChildProcessMsg_Shutdown()); 324 Send(new ChildProcessMsg_Shutdown());
325 } 325 }
326 326
327 void ChildProcessHostImpl::OnAllocateGpuMemoryBuffer( 327 void ChildProcessHostImpl::OnAllocateGpuMemoryBuffer(
328 gfx::GpuMemoryBufferId id, 328 gfx::GpuMemoryBufferId id,
329 uint32_t width, 329 uint32_t width,
330 uint32_t height, 330 uint32_t height,
331 gfx::BufferFormat format, 331 gfx::BufferFormat format,
332 gfx::BufferUsage usage, 332 gfx::BufferUsage usage,
333 gfx::GpuMemoryBufferHandle* handle) { 333 gfx::GpuMemoryBufferHandle* handle) {
334 // TODO(reveman): Add support for other types of GpuMemoryBuffers. 334 // TODO(reveman): Add support for other types of GpuMemoryBuffers.
335 335
336 // AllocateForChildProcess() will check if |width| and |height| are valid 336 // AllocateForChildProcess() will check if |width| and |height| are valid
337 // and handle failure in a controlled way when not. We just need to make 337 // and handle failure in a controlled way when not. We just need to make
338 // sure |usage| is supported here. 338 // sure |usage| is supported here.
339 if (gpu::GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage)) { 339 if (gpu::GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage)) {
340 *handle = gpu::GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( 340 *handle = gpu::GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
341 id, gfx::Size(width, height), format, peer_process_.Handle()); 341 id, gfx::Size(width, height), format);
342 } 342 }
343 } 343 }
344 344
345 void ChildProcessHostImpl::OnDeletedGpuMemoryBuffer( 345 void ChildProcessHostImpl::OnDeletedGpuMemoryBuffer(
346 gfx::GpuMemoryBufferId id, 346 gfx::GpuMemoryBufferId id,
347 const gpu::SyncToken& sync_token) { 347 const gpu::SyncToken& sync_token) {
348 // Note: Nothing to do here as ownership of shared memory backed 348 // Note: Nothing to do here as ownership of shared memory backed
349 // GpuMemoryBuffers is passed with IPC. 349 // GpuMemoryBuffers is passed with IPC.
350 } 350 }
351 351
352 } // namespace content 352 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698