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

Unified Diff: webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « views/widget/native_widget_wayland.cc ('k') | webkit/gpu/webgraphicscontext3d_in_process_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc
===================================================================
--- webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc (revision 105357)
+++ webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc (working copy)
@@ -103,7 +103,8 @@
GLInProcessContext* context_group,
const char* allowed_extensions,
const int32* attrib_list,
- const GURL& active_arl);
+ const GURL& active_url,
+ gfx::GpuPreference gpu_preference);
// Create a GLInProcessContext that renders to an offscreen frame buffer. If
// parent is not NULL, that GLInProcessContext can access a copy of the
@@ -119,7 +120,8 @@
GLInProcessContext* context_group,
const char* allowed_extensions,
const int32* attrib_list,
- const GURL& active_url);
+ const GURL& active_url,
+ gfx::GpuPreference gpu_preference);
// For an offscreen frame buffer GLInProcessContext, return the texture ID
// with respect to the parent GLInProcessContext. Returns zero if
@@ -173,7 +175,8 @@
GLInProcessContext* context_group,
const char* allowed_extensions,
const int32* attrib_list,
- const GURL& active_url);
+ const GURL& active_url,
+ gfx::GpuPreference gpu_preference);
void Destroy();
void OnSwapBuffers();
@@ -240,7 +243,8 @@
GLInProcessContext* context_group,
const char* allowed_extensions,
const int32* attrib_list,
- const GURL& active_url) {
+ const GURL& active_url,
+ gfx::GpuPreference gpu_preference) {
#if defined(ENABLE_GPU)
scoped_ptr<GLInProcessContext> context(new GLInProcessContext(NULL));
if (!context->Initialize(
@@ -250,7 +254,8 @@
context_group,
allowed_extensions,
attrib_list,
- active_url))
+ active_url,
+ gpu_preference))
return NULL;
return context.release();
@@ -265,7 +270,8 @@
GLInProcessContext* context_group,
const char* allowed_extensions,
const int32* attrib_list,
- const GURL& active_url) {
+ const GURL& active_url,
+ gfx::GpuPreference gpu_preference) {
#if defined(ENABLE_GPU)
scoped_ptr<GLInProcessContext> context(new GLInProcessContext(parent));
if (!context->Initialize(
@@ -275,7 +281,8 @@
context_group,
allowed_extensions,
attrib_list,
- active_url))
+ active_url,
+ gpu_preference))
return NULL;
return context.release();
@@ -397,7 +404,8 @@
GLInProcessContext* context_group,
const char* allowed_extensions,
const int32* attrib_list,
- const GURL& active_url) {
+ const GURL& active_url,
+ gfx::GpuPreference gpu_preference) {
// Use one share group for all contexts.
static scoped_refptr<gfx::GLShareGroup> share_group(new gfx::GLShareGroup);
@@ -480,7 +488,9 @@
return false;
}
- context_ = gfx::GLContext::CreateGLContext(share_group.get(), surface_.get());
+ context_ = gfx::GLContext::CreateGLContext(share_group.get(),
+ surface_.get(),
+ gpu_preference);
if (!context_.get()) {
LOG(ERROR) << "Could not create GLContext.";
Destroy();
@@ -625,6 +635,13 @@
const char* preferred_extensions = "*";
+ // TODO(kbr): More work will be needed in this implementation to
+ // properly support GPU switching. Like in the out-of-process
+ // command buffer implementation, all previously created contexts
+ // will need to be lost either when the first context requesting the
+ // discrete GPU is created, or the last one is destroyed.
+ gfx::GpuPreference gpu_preference = gfx::PreferDiscreteGpu;
+
GURL active_url;
if (web_view && web_view->mainFrame())
active_url = GURL(web_view->mainFrame()->document().url());
@@ -653,7 +670,8 @@
context_group ? context_group->context_ : NULL,
preferred_extensions,
attribs,
- active_url);
+ active_url,
+ gpu_preference);
web_view_ = NULL;
if (!context_)
« no previous file with comments | « views/widget/native_widget_wayland.cc ('k') | webkit/gpu/webgraphicscontext3d_in_process_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698