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

Side by Side Diff: content/renderer/gpu/gpu_channel_host.cc

Issue 8233027: Support dynamic switching between integrated and discrete GPUs on Mac OS X. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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 | « content/renderer/gpu/gpu_channel_host.h ('k') | content/renderer/gpu/renderer_gl_context.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/renderer/gpu/gpu_channel_host.h" 5 #include "content/renderer/gpu/gpu_channel_host.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/message_loop_proxy.h" 8 #include "base/message_loop_proxy.h"
9 #include "content/common/child_process.h" 9 #include "content/common/child_process.h"
10 #include "content/common/gpu/gpu_messages.h" 10 #include "content/common/gpu/gpu_messages.h"
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 // successful. See IPC::Message::Sender. 198 // successful. See IPC::Message::Sender.
199 delete message; 199 delete message;
200 return false; 200 return false;
201 } 201 }
202 202
203 CommandBufferProxy* GpuChannelHost::CreateViewCommandBuffer( 203 CommandBufferProxy* GpuChannelHost::CreateViewCommandBuffer(
204 int render_view_id, 204 int render_view_id,
205 CommandBufferProxy* share_group, 205 CommandBufferProxy* share_group,
206 const std::string& allowed_extensions, 206 const std::string& allowed_extensions,
207 const std::vector<int32>& attribs, 207 const std::vector<int32>& attribs,
208 const GURL& active_url) { 208 const GURL& active_url,
209 gfx::GpuPreference gpu_preference) {
209 DCHECK(ChildThread::current()); 210 DCHECK(ChildThread::current());
210 #if defined(ENABLE_GPU) 211 #if defined(ENABLE_GPU)
211 AutoLock lock(context_lock_); 212 AutoLock lock(context_lock_);
212 // An error occurred. Need to get the host again to reinitialize it. 213 // An error occurred. Need to get the host again to reinitialize it.
213 if (!channel_.get()) 214 if (!channel_.get())
214 return NULL; 215 return NULL;
215 216
216 GPUCreateCommandBufferConfig init_params; 217 GPUCreateCommandBufferConfig init_params;
217 init_params.share_group_id = 218 init_params.share_group_id =
218 share_group ? share_group->route_id() : MSG_ROUTING_NONE; 219 share_group ? share_group->route_id() : MSG_ROUTING_NONE;
219 init_params.allowed_extensions = allowed_extensions; 220 init_params.allowed_extensions = allowed_extensions;
220 init_params.attribs = attribs; 221 init_params.attribs = attribs;
221 init_params.active_url = active_url; 222 init_params.active_url = active_url;
223 init_params.gpu_preference = gpu_preference;
222 int32 route_id; 224 int32 route_id;
223 if (!ChildThread::current()->Send( 225 if (!ChildThread::current()->Send(
224 new GpuHostMsg_CreateViewCommandBuffer( 226 new GpuHostMsg_CreateViewCommandBuffer(
225 render_view_id, 227 render_view_id,
226 init_params, 228 init_params,
227 &route_id))) { 229 &route_id))) {
228 return NULL; 230 return NULL;
229 } 231 }
230 232
231 if (route_id == MSG_ROUTING_NONE) 233 if (route_id == MSG_ROUTING_NONE)
(...skipping 17 matching lines...) Expand all
249 DCHECK(it != proxies_.end()); 251 DCHECK(it != proxies_.end());
250 CommandBufferProxy* proxy = it->second; 252 CommandBufferProxy* proxy = it->second;
251 return proxy->CreateVideoDecoder(profile, client); 253 return proxy->CreateVideoDecoder(profile, client);
252 } 254 }
253 255
254 CommandBufferProxy* GpuChannelHost::CreateOffscreenCommandBuffer( 256 CommandBufferProxy* GpuChannelHost::CreateOffscreenCommandBuffer(
255 const gfx::Size& size, 257 const gfx::Size& size,
256 CommandBufferProxy* share_group, 258 CommandBufferProxy* share_group,
257 const std::string& allowed_extensions, 259 const std::string& allowed_extensions,
258 const std::vector<int32>& attribs, 260 const std::vector<int32>& attribs,
259 const GURL& active_url) { 261 const GURL& active_url,
262 gfx::GpuPreference gpu_preference) {
260 #if defined(ENABLE_GPU) 263 #if defined(ENABLE_GPU)
261 AutoLock lock(context_lock_); 264 AutoLock lock(context_lock_);
262 // An error occurred. Need to get the host again to reinitialize it. 265 // An error occurred. Need to get the host again to reinitialize it.
263 if (!channel_.get()) 266 if (!channel_.get())
264 return NULL; 267 return NULL;
265 268
266 GPUCreateCommandBufferConfig init_params; 269 GPUCreateCommandBufferConfig init_params;
267 init_params.share_group_id = 270 init_params.share_group_id =
268 share_group ? share_group->route_id() : MSG_ROUTING_NONE; 271 share_group ? share_group->route_id() : MSG_ROUTING_NONE;
269 init_params.allowed_extensions = allowed_extensions; 272 init_params.allowed_extensions = allowed_extensions;
270 init_params.attribs = attribs; 273 init_params.attribs = attribs;
271 init_params.active_url = active_url; 274 init_params.active_url = active_url;
275 init_params.gpu_preference = gpu_preference;
272 int32 route_id; 276 int32 route_id;
273 if (!Send(new GpuChannelMsg_CreateOffscreenCommandBuffer(size, 277 if (!Send(new GpuChannelMsg_CreateOffscreenCommandBuffer(size,
274 init_params, 278 init_params,
275 &route_id))) { 279 &route_id))) {
276 return NULL; 280 return NULL;
277 } 281 }
278 282
279 if (route_id == MSG_ROUTING_NONE) 283 if (route_id == MSG_ROUTING_NONE)
280 return NULL; 284 return NULL;
281 285
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 } 319 }
316 320
317 void GpuChannelHost::RemoveRoute(int route_id) { 321 void GpuChannelHost::RemoveRoute(int route_id) {
318 MessageLoopProxy* io_loop = RenderProcess::current()->io_message_loop_proxy(); 322 MessageLoopProxy* io_loop = RenderProcess::current()->io_message_loop_proxy();
319 io_loop->PostTask(FROM_HERE, 323 io_loop->PostTask(FROM_HERE,
320 NewRunnableMethod( 324 NewRunnableMethod(
321 channel_filter_.get(), 325 channel_filter_.get(),
322 &GpuChannelHost::MessageFilter::RemoveRoute, 326 &GpuChannelHost::MessageFilter::RemoveRoute,
323 route_id)); 327 route_id));
324 } 328 }
329
330 bool GpuChannelHost::WillGpuSwitchOccur(
331 bool is_creating_context, gfx::GpuPreference gpu_preference) {
332 bool result = false;
333 if (!Send(new GpuChannelMsg_WillGpuSwitchOccur(is_creating_context,
334 gpu_preference,
335 &result))) {
336 return false;
337 }
338 return result;
339 }
340
341 void GpuChannelHost::ForciblyCloseChannel() {
342 Send(new GpuChannelMsg_CloseChannel());
343 SetStateLost();
344 }
OLDNEW
« no previous file with comments | « content/renderer/gpu/gpu_channel_host.h ('k') | content/renderer/gpu/renderer_gl_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698