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

Side by Side Diff: gpu/command_buffer/service/gpu_scheduler_win.cc

Issue 7205012: RendererGLContext supports reparenting a GL context. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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
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 <windows.h> 5 #include <windows.h>
6 6
7 #include "gpu/command_buffer/service/gpu_scheduler.h" 7 #include "gpu/command_buffer/service/gpu_scheduler.h"
8 #include "ui/gfx/gl/gl_context.h" 8 #include "ui/gfx/gl/gl_context.h"
9 #include "ui/gfx/gl/gl_share_group.h" 9 #include "ui/gfx/gl/gl_share_group.h"
10 #include "ui/gfx/gl/gl_surface.h" 10 #include "ui/gfx/gl/gl_surface.h"
11 11
12 using ::base::SharedMemory; 12 using ::base::SharedMemory;
13 13
14 namespace gpu { 14 namespace gpu {
15 15
16 bool GpuScheduler::Initialize( 16 bool GpuScheduler::Initialize(
17 gfx::PluginWindowHandle window, 17 gfx::PluginWindowHandle window,
18 const gfx::Size& size, 18 const gfx::Size& size,
19 const gles2::DisallowedExtensions& disallowed_extensions, 19 const gles2::DisallowedExtensions& disallowed_extensions,
20 const char* allowed_extensions, 20 const char* allowed_extensions,
21 const std::vector<int32>& attribs, 21 const std::vector<int32>& attribs,
22 GpuScheduler* parent,
23 uint32 parent_texture_id,
24 gfx::GLShareGroup* share_group) { 22 gfx::GLShareGroup* share_group) {
25 // Get the parent decoder.
26 gles2::GLES2Decoder* parent_decoder = NULL;
27 if (parent) {
28 parent_decoder = parent->decoder_.get();
29 DCHECK(parent_decoder);
30 }
31
32 // Create either a view or pbuffer based GLSurface. 23 // Create either a view or pbuffer based GLSurface.
33 scoped_refptr<gfx::GLSurface> surface; 24 scoped_refptr<gfx::GLSurface> surface;
34 if (window) { 25 if (window) {
35 surface = gfx::GLSurface::CreateViewGLSurface(window); 26 surface = gfx::GLSurface::CreateViewGLSurface(window);
36 } else { 27 } else {
37 surface = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(1, 1)); 28 surface = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(1, 1));
38 } 29 }
39 30
40 if (!surface.get()) { 31 if (!surface.get()) {
41 LOG(ERROR) << "GpuScheduler::Initialize failed.\n"; 32 LOG(ERROR) << "GpuScheduler::Initialize failed.\n";
42 Destroy(); 33 Destroy();
43 return false; 34 return false;
44 } 35 }
45 36
46 // Create a GLContext and attach the surface. 37 // Create a GLContext and attach the surface.
47 scoped_refptr<gfx::GLContext> context( 38 scoped_refptr<gfx::GLContext> context(
48 gfx::GLContext::CreateGLContext(share_group, surface.get())); 39 gfx::GLContext::CreateGLContext(share_group, surface.get()));
49 if (!context.get()) { 40 if (!context.get()) {
50 LOG(ERROR) << "CreateGLContext failed.\n"; 41 LOG(ERROR) << "CreateGLContext failed.\n";
51 Destroy(); 42 Destroy();
52 return false; 43 return false;
53 } 44 }
54 45
55 return InitializeCommon(surface, 46 return InitializeCommon(surface,
56 context, 47 context,
57 size, 48 size,
58 disallowed_extensions, 49 disallowed_extensions,
59 allowed_extensions, 50 allowed_extensions,
60 attribs, 51 attribs);
61 parent_decoder,
62 parent_texture_id);
63 } 52 }
64 53
65 void GpuScheduler::Destroy() { 54 void GpuScheduler::Destroy() {
66 DestroyCommon(); 55 DestroyCommon();
67 } 56 }
68 57
69 void GpuScheduler::WillSwapBuffers() { 58 void GpuScheduler::WillSwapBuffers() {
70 if (wrapped_swap_buffers_callback_.get()) { 59 if (wrapped_swap_buffers_callback_.get()) {
71 wrapped_swap_buffers_callback_->Run(); 60 wrapped_swap_buffers_callback_->Run();
72 } 61 }
73 } 62 }
74 63
75 } // namespace gpu 64 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698