diff options
author | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-11 19:22:37 +0000 |
---|---|---|
committer | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-11 19:22:37 +0000 |
commit | 92c2bc5ac0f605a14dfa88649e7c5a844eb0922b (patch) | |
tree | 814efb2ec279b176a052713fba9ae8d000265116 /gpu | |
parent | b6793a8d2f4af8c0ca6cfca6fbe3168f5de75b5e (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc | 2 | ||||
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h | 2 | ||||
-rw-r--r-- | gpu/command_buffer/service/gpu_scheduler_linux.cc | 22 | ||||
-rw-r--r-- | gpu/command_buffer/service/gpu_scheduler_mac.cc | 17 | ||||
-rw-r--r-- | gpu/command_buffer/service/gpu_scheduler_win.cc | 26 | ||||
-rw-r--r-- | gpu/demos/framework/main_exe.cc | 4 |
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)); |