summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/gpu_scheduler_win.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service/gpu_scheduler_win.cc')
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_win.cc26
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,