summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service')
-rw-r--r--gpu/command_buffer/service/gpu_scheduler.h4
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_linux.cc20
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_mac.cc12
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_win.cc12
4 files changed, 20 insertions, 28 deletions
diff --git a/gpu/command_buffer/service/gpu_scheduler.h b/gpu/command_buffer/service/gpu_scheduler.h
index 7f74734..78845df 100644
--- a/gpu/command_buffer/service/gpu_scheduler.h
+++ b/gpu/command_buffer/service/gpu_scheduler.h
@@ -27,6 +27,7 @@
namespace gfx {
class GLContext;
+class GLShareGroup;
class GLSurface;
}
@@ -63,7 +64,8 @@ class GpuScheduler : public CommandBufferEngine {
const char* allowed_extensions,
const std::vector<int32>& attribs,
GpuScheduler* parent,
- uint32 parent_texture_id);
+ uint32 parent_texture_id,
+ gfx::GLShareGroup* share_group);
void Destroy();
void DestroyCommon();
diff --git a/gpu/command_buffer/service/gpu_scheduler_linux.cc b/gpu/command_buffer/service/gpu_scheduler_linux.cc
index f1d49da..84d821e 100644
--- a/gpu/command_buffer/service/gpu_scheduler_linux.cc
+++ b/gpu/command_buffer/service/gpu_scheduler_linux.cc
@@ -4,6 +4,7 @@
#include "gpu/command_buffer/service/gpu_scheduler.h"
#include "ui/gfx/gl/gl_context.h"
+#include "ui/gfx/gl/gl_share_group.h"
#include "ui/gfx/gl/gl_surface.h"
using ::base::SharedMemory;
@@ -17,28 +18,21 @@ bool GpuScheduler::Initialize(
const char* allowed_extensions,
const std::vector<int32>& attribs,
GpuScheduler* parent,
- uint32 parent_texture_id) {
- // Get the parent decoder and the GLContext to share IDs with, if any.
+ uint32 parent_texture_id,
+ gfx::GLShareGroup* share_group) {
+ // Get the parent decoder.
gles2::GLES2Decoder* parent_decoder = NULL;
- gfx::GLContext* parent_context = NULL;
- void* parent_handle = NULL;
if (parent) {
parent_decoder = parent->decoder_.get();
DCHECK(parent_decoder);
-
- parent_context = parent_decoder->GetGLContext();
- DCHECK(parent_context);
}
// Create either a view or pbuffer based GLSurface.
scoped_refptr<gfx::GLSurface> surface;
- if (window) {
- DCHECK(!parent_handle);
-
+ if (window)
surface = gfx::GLSurface::CreateViewGLSurface(window);
- } else {
+ else
surface = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(1, 1));
- }
if (!surface.get()) {
LOG(ERROR) << "GpuScheduler::Initialize failed.\n";
@@ -48,7 +42,7 @@ bool GpuScheduler::Initialize(
// Create a GLContext and attach the surface.
scoped_refptr<gfx::GLContext> context(
- gfx::GLContext::CreateGLContext(parent_context, surface.get()));
+ gfx::GLContext::CreateGLContext(share_group, surface.get()));
if (!context.get()) {
LOG(ERROR) << "CreateGLContext failed.\n";
Destroy();
diff --git a/gpu/command_buffer/service/gpu_scheduler_mac.cc b/gpu/command_buffer/service/gpu_scheduler_mac.cc
index 449a90f..0e4d8d6 100644
--- a/gpu/command_buffer/service/gpu_scheduler_mac.cc
+++ b/gpu/command_buffer/service/gpu_scheduler_mac.cc
@@ -4,6 +4,7 @@
#include "gpu/command_buffer/service/gpu_scheduler.h"
#include "ui/gfx/gl/gl_context.h"
+#include "ui/gfx/gl/gl_share_group.h"
#include "ui/gfx/gl/gl_surface.h"
using ::base::SharedMemory;
@@ -17,16 +18,13 @@ bool GpuScheduler::Initialize(
const char* allowed_extensions,
const std::vector<int32>& attribs,
GpuScheduler* parent,
- uint32 parent_texture_id) {
- // Get the parent decoder and the GLContext to share IDs with, if any.
+ uint32 parent_texture_id,
+ gfx::GLShareGroup* share_group) {
+ // Get the parent decoder.
gles2::GLES2Decoder* parent_decoder = NULL;
- gfx::GLContext* parent_context = NULL;
if (parent) {
parent_decoder = parent->decoder_.get();
DCHECK(parent_decoder);
-
- parent_context = parent_decoder->GetGLContext();
- DCHECK(parent_context);
}
scoped_refptr<gfx::GLSurface> surface(
@@ -39,7 +37,7 @@ bool GpuScheduler::Initialize(
// Create a GLContext and attach the surface.
scoped_refptr<gfx::GLContext> context(
- gfx::GLContext::CreateGLContext(parent_context, surface.get()));
+ gfx::GLContext::CreateGLContext(share_group, surface.get()));
if (!context.get()) {
LOG(ERROR) << "CreateGLContext failed.\n";
Destroy();
diff --git a/gpu/command_buffer/service/gpu_scheduler_win.cc b/gpu/command_buffer/service/gpu_scheduler_win.cc
index 81ab10b..a92d225 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_share_group.h"
#include "ui/gfx/gl/gl_surface.h"
using ::base::SharedMemory;
@@ -19,16 +20,13 @@ bool GpuScheduler::Initialize(
const char* allowed_extensions,
const std::vector<int32>& attribs,
GpuScheduler* parent,
- uint32 parent_texture_id) {
- // Get the parent decoder and the GLContext to share IDs with, if any.
+ uint32 parent_texture_id,
+ gfx::GLShareGroup* share_group) {
+ // Get the parent decoder.
gles2::GLES2Decoder* parent_decoder = NULL;
- gfx::GLContext* parent_context = NULL;
if (parent) {
parent_decoder = parent->decoder_.get();
DCHECK(parent_decoder);
-
- parent_context = parent_decoder->GetGLContext();
- DCHECK(parent_context);
}
// Create either a view or pbuffer based GLSurface.
@@ -47,7 +45,7 @@ bool GpuScheduler::Initialize(
// Create a GLContext and attach the surface.
scoped_refptr<gfx::GLContext> context(
- gfx::GLContext::CreateGLContext(parent_context, surface.get()));
+ gfx::GLContext::CreateGLContext(share_group, surface.get()));
if (!context.get()) {
LOG(ERROR) << "CreateGLContext failed.\n";
Destroy();