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

Side by Side Diff: chrome/plugin/command_buffer_stub.cc

Issue 558035: [GPU] Get GPU process running on the mac... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/plugin/command_buffer_stub.h ('k') | chrome/plugin/webplugin_delegate_stub.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "base/process_util.h" 5 #include "base/process_util.h"
6 #include "base/shared_memory.h" 6 #include "base/shared_memory.h"
7 #include "chrome/common/command_buffer_messages.h" 7 #include "chrome/common/command_buffer_messages.h"
8 #include "chrome/common/plugin_messages.h"
8 #include "chrome/plugin/command_buffer_stub.h" 9 #include "chrome/plugin/command_buffer_stub.h"
9 #include "chrome/plugin/plugin_channel.h" 10 #include "chrome/plugin/plugin_channel.h"
10 11
11 using gpu::Buffer; 12 using gpu::Buffer;
12 13
13 CommandBufferStub::CommandBufferStub(PluginChannel* channel, 14 CommandBufferStub::CommandBufferStub(PluginChannel* channel,
15 int plugin_host_route_id,
14 gfx::PluginWindowHandle window) 16 gfx::PluginWindowHandle window)
15 : channel_(channel), 17 : channel_(channel),
18 plugin_host_route_id_(plugin_host_route_id),
16 window_(window) { 19 window_(window) {
17 route_id_ = channel->GenerateRouteID(); 20 route_id_ = channel->GenerateRouteID();
18 channel->AddRoute(route_id_, this, false); 21 channel->AddRoute(route_id_, this, false);
19 } 22 }
20 23
21 CommandBufferStub::~CommandBufferStub() { 24 CommandBufferStub::~CommandBufferStub() {
22 channel_->RemoveRoute(route_id_); 25 channel_->RemoveRoute(route_id_);
23 } 26 }
24 27
25 void CommandBufferStub::OnChannelError() { 28 void CommandBufferStub::OnChannelError() {
(...skipping 25 matching lines...) Expand all
51 54
52 // Initialize the CommandBufferService and GPUProcessor. 55 // Initialize the CommandBufferService and GPUProcessor.
53 if (command_buffer_->Initialize(size)) { 56 if (command_buffer_->Initialize(size)) {
54 Buffer buffer = command_buffer_->GetRingBuffer(); 57 Buffer buffer = command_buffer_->GetRingBuffer();
55 if (buffer.shared_memory) { 58 if (buffer.shared_memory) {
56 processor_ = new gpu::GPUProcessor(command_buffer_.get()); 59 processor_ = new gpu::GPUProcessor(command_buffer_.get());
57 if (processor_->Initialize(window_)) { 60 if (processor_->Initialize(window_)) {
58 command_buffer_->SetPutOffsetChangeCallback( 61 command_buffer_->SetPutOffsetChangeCallback(
59 NewCallback(processor_.get(), 62 NewCallback(processor_.get(),
60 &gpu::GPUProcessor::ProcessCommands)); 63 &gpu::GPUProcessor::ProcessCommands));
64 #if defined(OS_MACOSX)
65 processor_->SetSwapBuffersCallback(
66 NewCallback(this,
67 &CommandBufferStub::SwapBuffersCallback));
68 #endif
61 buffer.shared_memory->ShareToProcess(peer_handle, ring_buffer); 69 buffer.shared_memory->ShareToProcess(peer_handle, ring_buffer);
62 } else { 70 } else {
63 processor_ = NULL; 71 processor_ = NULL;
64 command_buffer_.reset(); 72 command_buffer_.reset();
65 } 73 }
66 } 74 }
67 } 75 }
68 76
69 base::CloseProcessHandle(peer_handle); 77 base::CloseProcessHandle(peer_handle);
70 } 78 }
(...skipping 30 matching lines...) Expand all
101 109
102 Buffer buffer = command_buffer_->GetTransferBuffer(id); 110 Buffer buffer = command_buffer_->GetTransferBuffer(id);
103 if (buffer.shared_memory) { 111 if (buffer.shared_memory) {
104 buffer.shared_memory->ShareToProcess(peer_handle, transfer_buffer); 112 buffer.shared_memory->ShareToProcess(peer_handle, transfer_buffer);
105 *size = buffer.shared_memory->max_size(); 113 *size = buffer.shared_memory->max_size();
106 } 114 }
107 115
108 base::CloseProcessHandle(peer_handle); 116 base::CloseProcessHandle(peer_handle);
109 } 117 }
110 118
119 #if defined(OS_MACOSX)
120 void CommandBufferStub::OnSetWindowSize(int32 width, int32 height) {
121 uint64 new_backing_store = processor_->SetWindowSize(width, height);
122 if (new_backing_store) {
123 Send(new PluginHostMsg_GPUPluginSetIOSurface(plugin_host_route_id_,
124 window_,
125 width,
126 height,
127 new_backing_store));
128 }
129 }
130
131 void CommandBufferStub::SwapBuffersCallback() {
132 Send(new PluginHostMsg_GPUPluginBuffersSwapped(plugin_host_route_id_,
133 window_));
134 }
135 #endif
136
111 void CommandBufferStub::OnMessageReceived(const IPC::Message& msg) { 137 void CommandBufferStub::OnMessageReceived(const IPC::Message& msg) {
112 IPC_BEGIN_MESSAGE_MAP(CommandBufferStub, msg) 138 IPC_BEGIN_MESSAGE_MAP(CommandBufferStub, msg)
113 IPC_MESSAGE_HANDLER(CommandBufferMsg_Initialize, OnInitialize); 139 IPC_MESSAGE_HANDLER(CommandBufferMsg_Initialize, OnInitialize);
114 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetState, OnGetState); 140 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetState, OnGetState);
115 IPC_MESSAGE_HANDLER(CommandBufferMsg_Flush, OnFlush); 141 IPC_MESSAGE_HANDLER(CommandBufferMsg_Flush, OnFlush);
116 IPC_MESSAGE_HANDLER(CommandBufferMsg_CreateTransferBuffer, 142 IPC_MESSAGE_HANDLER(CommandBufferMsg_CreateTransferBuffer,
117 OnCreateTransferBuffer); 143 OnCreateTransferBuffer);
118 IPC_MESSAGE_HANDLER(CommandBufferMsg_DestroyTransferBuffer, 144 IPC_MESSAGE_HANDLER(CommandBufferMsg_DestroyTransferBuffer,
119 OnDestroyTransferBuffer); 145 OnDestroyTransferBuffer);
120 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetTransferBuffer, 146 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetTransferBuffer,
121 OnGetTransferBuffer); 147 OnGetTransferBuffer);
148 #if defined(OS_MACOSX)
149 IPC_MESSAGE_HANDLER(CommandBufferMsg_SetWindowSize, OnSetWindowSize);
150 #endif
122 IPC_MESSAGE_UNHANDLED_ERROR() 151 IPC_MESSAGE_UNHANDLED_ERROR()
123 IPC_END_MESSAGE_MAP() 152 IPC_END_MESSAGE_MAP()
124 } 153 }
OLDNEW
« no previous file with comments | « chrome/plugin/command_buffer_stub.h ('k') | chrome/plugin/webplugin_delegate_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698