diff options
Diffstat (limited to 'gpu/command_buffer/service/gpu_scheduler_win.cc')
-rw-r--r-- | gpu/command_buffer/service/gpu_scheduler_win.cc | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/gpu/command_buffer/service/gpu_scheduler_win.cc b/gpu/command_buffer/service/gpu_scheduler_win.cc index 23c8782..7a874a2 100644 --- a/gpu/command_buffer/service/gpu_scheduler_win.cc +++ b/gpu/command_buffer/service/gpu_scheduler_win.cc @@ -6,6 +6,7 @@ #include "gpu/command_buffer/service/gpu_scheduler.h" #include "ui/gfx/gl/gl_context.h" +#include "ui/gfx/gl/gl_surface.h" using ::base::SharedMemory; @@ -30,19 +31,28 @@ bool GpuScheduler::Initialize( DCHECK(parent_context); } - // Create either a view or pbuffer based GLContext. - scoped_ptr<gfx::GLContext> context; + // Create either a view or pbuffer based GLSurface. + scoped_ptr<gfx::GLSurface> surface; if (window) { - DCHECK(!parent_context); - - // TODO(apatrick): support multisampling. - context.reset(gfx::GLContext::CreateViewGLContext(window, false)); + surface.reset(gfx::GLSurface::CreateViewGLSurface(window)); } else { - context.reset(gfx::GLContext::CreateOffscreenGLContext(parent_context)); + surface.reset(gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(1, 1))); } - if (!context.get()) + if (!surface.get()) { + LOG(ERROR) << "GpuScheduler::Initialize failed.\n"; + Destroy(); return false; + } + + // Create a GLContext and attach the surface. + scoped_ptr<gfx::GLContext> context( + gfx::GLContext::CreateGLContext(surface.release(), parent_context)); + if (!context.get()) { + LOG(ERROR) << "CreateGLContext failed.\n"; + Destroy(); + return false; + } return InitializeCommon(context.release(), size, |