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

Unified Diff: chrome/gpu/gpu_command_buffer_stub.cc

Issue 6557006: Moved creation of GPU transfer buffers into the browser process.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/gpu/gpu_command_buffer_stub.cc
===================================================================
--- chrome/gpu/gpu_command_buffer_stub.cc (revision 75655)
+++ chrome/gpu/gpu_command_buffer_stub.cc (working copy)
@@ -170,6 +170,8 @@
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush);
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_CreateTransferBuffer,
OnCreateTransferBuffer);
+ IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_RegisterTransferBuffer,
+ OnRegisterTransferBuffer);
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyTransferBuffer,
OnDestroyTransferBuffer);
IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_GetTransferBuffer,
@@ -235,7 +237,7 @@
// Assume service is responsible for duplicating the handle from the
// calling process.
- buffer.shared_memory->ShareToProcess(channel_->renderer_handle(),
+ buffer.shared_memory->ShareToProcess(channel_->renderer_process(),
ring_buffer);
#if defined(OS_MACOSX)
if (handle_) {
@@ -289,6 +291,20 @@
*id = command_buffer_->CreateTransferBuffer(size);
}
+void GpuCommandBufferStub::OnRegisterTransferBuffer(
+ base::SharedMemoryHandle transfer_buffer,
+ size_t size,
+ int32* id) {
+#if defined(OS_WIN)
+ base::SharedMemory shared_memory(transfer_buffer,
+ false,
+ channel_->renderer_process());
+#else
+ base::SharedMemory shared_memory(transfer_buffer, false);
+#endif
+ *id = command_buffer_->RegisterTransferBuffer(&shared_memory, size);
+}
+
void GpuCommandBufferStub::OnDestroyTransferBuffer(int32 id) {
command_buffer_->DestroyTransferBuffer(id);
}
@@ -300,13 +316,17 @@
*transfer_buffer = base::SharedMemoryHandle();
*size = 0;
+ // Fail if the renderer process has not provided its process handle.
+ if (!channel_->renderer_process())
+ return;
+
Buffer buffer = command_buffer_->GetTransferBuffer(id);
if (buffer.shared_memory) {
// Assume service is responsible for duplicating the handle to the calling
// process.
- buffer.shared_memory->ShareToProcess(channel_->renderer_handle(),
+ buffer.shared_memory->ShareToProcess(channel_->renderer_process(),
transfer_buffer);
- *size = buffer.shared_memory->created_size();
+ *size = buffer.size;
}
}

Powered by Google App Engine
This is Rietveld 408576698