summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-11 19:22:37 +0000
committerapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-11 19:22:37 +0000
commit92c2bc5ac0f605a14dfa88649e7c5a844eb0922b (patch)
tree814efb2ec279b176a052713fba9ae8d000265116 /gpu
parentb6793a8d2f4af8c0ca6cfca6fbe3168f5de75b5e (diff)
downloadchromium_src-92c2bc5ac0f605a14dfa88649e7c5a844eb0922b.zip
chromium_src-92c2bc5ac0f605a14dfa88649e7c5a844eb0922b.tar.gz
chromium_src-92c2bc5ac0f605a14dfa88649e7c5a844eb0922b.tar.bz2
Split GLContext::Create*GLContext into GLSurface::Create*GLSurface plus a surface type independent GLContext::CreateGLContext.
TEST=webgl on windows and mac, trybots BUG=none Review URL: http://codereview.chromium.org/6997003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85013 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/client/gles2_demo.cc4
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc2
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h2
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_linux.cc22
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_mac.cc17
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_win.cc26
-rw-r--r--gpu/demos/framework/main_exe.cc4
7 files changed, 55 insertions, 22 deletions
diff --git a/gpu/command_buffer/client/gles2_demo.cc b/gpu/command_buffer/client/gles2_demo.cc
index 54a3b89..78768dd 100644
--- a/gpu/command_buffer/client/gles2_demo.cc
+++ b/gpu/command_buffer/client/gles2_demo.cc
@@ -25,7 +25,7 @@
#include "gpu/command_buffer/client/gles2_lib.h"
#include "gpu/command_buffer/client/gles2_demo_c.h"
#include "gpu/command_buffer/client/gles2_demo_cc.h"
-#include "ui/gfx/gl/gl_context.h"
+#include "ui/gfx/gl/gl_surface.h"
using base::SharedMemory;
using gpu::Buffer;
@@ -212,7 +212,7 @@ int main(int argc, char** argv) {
base::AtExitManager at_exit_manager;
MessageLoopForUI message_loop;
- gfx::GLContext::InitializeOneOff();
+ gfx::GLSurface::InitializeOneOff();
GLES2Demo* demo = new GLES2Demo();
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
index f302aa3..40cb373 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -126,7 +126,7 @@ void GLES2DecoderTestBase::InitDecoder(
shared_memory_id_ = kSharedMemoryId;
shared_memory_base_ = buffer.ptr;
- context_ = new gfx::StubGLContext;
+ context_ = new gfx::GLContextStub;
context_->SetSize(gfx::Size(kBackBufferWidth, kBackBufferHeight));
decoder_.reset(GLES2Decoder::Create(group_.get()));
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
index 2d027f7..72a5e71 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
@@ -255,7 +255,7 @@ class GLES2DecoderTestBase : public testing::Test {
// Use StrictMock to make 100% sure we know how GL will be called.
scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
- gfx::StubGLContext* context_;
+ gfx::GLContextStub* context_;
scoped_ptr<GLES2Decoder> decoder_;
GLuint client_buffer_id_;
diff --git a/gpu/command_buffer/service/gpu_scheduler_linux.cc b/gpu/command_buffer/service/gpu_scheduler_linux.cc
index 48ed470..265c976 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_surface.h"
using ::base::SharedMemory;
@@ -29,19 +30,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_handle);
- // 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 (!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) << "GpuScheduler::Initialize failed";
+ LOG(ERROR) << "CreateGLContext failed.\n";
+ Destroy();
return false;
}
diff --git a/gpu/command_buffer/service/gpu_scheduler_mac.cc b/gpu/command_buffer/service/gpu_scheduler_mac.cc
index f89bfb5..717230c 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_surface.h"
using ::base::SharedMemory;
@@ -28,10 +29,22 @@ bool GpuScheduler::Initialize(
DCHECK(parent_context);
}
+ scoped_ptr<gfx::GLSurface> surface(
+ gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(1, 1)));
+ if (!surface.get()) {
+ LOG(ERROR) << "CreateOffscreenGLSurface failed.\n";
+ Destroy();
+ return false;
+ }
+
+ // Create a GLContext and attach the surface.
scoped_ptr<gfx::GLContext> context(
- gfx::GLContext::CreateOffscreenGLContext(parent_context));
- if (!context.get())
+ gfx::GLContext::CreateGLContext(surface.release(), parent_context));
+ if (!context.get()) {
+ LOG(ERROR) << "CreateGLContext failed.\n";
+ Destroy();
return false;
+ }
// On Mac OS X since we can not render on-screen we don't even
// attempt to create a view based GLContext. The only difference
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,
diff --git a/gpu/demos/framework/main_exe.cc b/gpu/demos/framework/main_exe.cc
index 93fc51e..0c54804 100644
--- a/gpu/demos/framework/main_exe.cc
+++ b/gpu/demos/framework/main_exe.cc
@@ -6,7 +6,7 @@
#include "base/command_line.h"
#include "base/logging.h"
#include "gpu/demos/framework/window.h"
-#include "ui/gfx/gl/gl_context.h"
+#include "ui/gfx/gl/gl_surface.h"
#if defined(OS_LINUX)
#include <gtk/gtk.h>
@@ -28,7 +28,7 @@ int main(int argc, char** argv) {
CommandLine::Init(argc, argv);
- gfx::GLContext::InitializeOneOff();
+ gfx::GLSurface::InitializeOneOff();
gpu::demos::Window window;
CHECK(window.Init(kWindowWidth, kWindowHeight));