Chromium Code Reviews| Index: webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc |
| =================================================================== |
| --- webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc (revision 104937) |
| +++ 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 |
|
stuartmorgan
2011/10/12 07:13:24
s/more/More/.
Annotate with a bug link?
Ken Russell (switch to Gerrit)
2011/10/12 22:39:42
OK.
|
| + // 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_) |