From 5b9dec1e9e9a86bf5d5c2acbbfc32597fac300a5 Mon Sep 17 00:00:00 2001 From: kylechar Date: Mon, 16 May 2016 08:40:57 -0700 Subject: [PATCH] Split //ui/gl into //ui/gl + //ui/gi/init. Refactor //ui/gl to fix Ozone dep problem. This CL is step 1 described in the associated bug. BUG=611142 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review-Url: https://codereview.chromium.org/1920163005 Cr-Commit-Position: refs/heads/master@{#393838} --- android_webview/BUILD.gn | 1 + android_webview/android_webview.gyp | 1 + android_webview/android_webview_tests.gypi | 1 + android_webview/browser/aw_gl_surface.h | 2 +- .../browser/scoped_app_gl_state_restore.cc | 7 +-- android_webview/browser/test/fake_window.cc | 7 +-- blimp/client/BUILD.gn | 1 + blimp/client/app/blimp_startup.cc | 4 +- components/mus/gles2/BUILD.gn | 1 + components/mus/gles2/command_buffer_driver.cc | 11 ++-- components/mus/gles2/gpu_state.cc | 4 +- content/common/sandbox_mac.mm | 4 +- content/content_common.gypi | 1 + content/content_gpu.gypi | 1 + content/gpu/BUILD.gn | 1 + content/gpu/gpu_child_thread.cc | 5 +- content/gpu/gpu_main.cc | 21 ++++---- gpu/BUILD.gn | 1 + gpu/command_buffer/service/BUILD.gn | 1 + .../service/in_process_command_buffer.cc | 11 ++-- gpu/command_buffer/tests/gl_manager.cc | 17 +++--- gpu/command_buffer/tests/gl_tests_main.cc | 4 +- .../tests/gl_unittests_android.cc | 3 +- gpu/command_buffer_service.gypi | 1 + gpu/config/BUILD.gn | 1 + gpu/config/gpu_info_collector.cc | 10 ++-- gpu/gles2_conform_support/egl/context.cc | 5 +- gpu/gles2_conform_support/egl/display.cc | 6 +-- gpu/gles2_conform_support/egl/thread_state.cc | 3 +- .../gles2_conform_support.gyp | 1 + gpu/gpu.gyp | 7 +++ gpu/gpu_config.gypi | 1 + gpu/gpu_ipc_client.gypi | 1 + gpu/gpu_ipc_common.gypi | 1 + gpu/gpu_ipc_service.gypi | 1 + gpu/ipc/service/BUILD.gn | 1 + gpu/ipc/service/gpu_channel_manager.cc | 3 +- gpu/ipc/service/gpu_command_buffer_stub.cc | 10 ++-- .../service/image_transport_surface_linux.cc | 5 +- .../service/image_transport_surface_win.cc | 3 +- gpu/perftests/texture_upload_perftest.cc | 11 ++-- gpu/tools/compositor_model_bench/BUILD.gn | 1 + .../compositor_model_bench.cc | 6 +-- gpu/tools/tools.gyp | 1 + media/gpu/BUILD.gn | 1 + media/gpu/rendering_helper.cc | 9 ++-- media/media_gpu.gypi | 2 + ui/aura/BUILD.gn | 2 +- ui/aura/aura.gyp | 1 + ui/aura/demo/DEPS | 2 +- ui/aura/demo/demo_main.cc | 4 +- ui/gl/BUILD.gn | 2 + ui/gl/generate_bindings.py | 6 +-- ui/gl/gl.gyp | 2 + ui/gl/gl_bindings_autogen_egl.h | 6 +-- ui/gl/gl_bindings_autogen_gl.h | 6 +-- ui/gl/gl_bindings_autogen_glx.h | 6 +-- ui/gl/gl_bindings_autogen_osmesa.h | 6 +-- ui/gl/gl_bindings_autogen_wgl.h | 6 +-- ui/gl/gl_context.h | 2 + ui/gl/gl_context_osmesa.h | 3 +- ui/gl/gl_context_stub.h | 1 + ui/gl/gl_context_stub_with_extensions.h | 1 + ui/gl/gl_egl_api_implementation.h | 2 +- ui/gl/gl_fence_apple.h | 1 + ui/gl/gl_fence_arb.h | 1 + ui/gl/gl_fence_egl.h | 1 + ui/gl/gl_fence_nv.h | 1 + ui/gl/gl_image_egl.h | 1 + ui/gl/gl_image_io_surface.h | 1 + ui/gl/gl_image_memory.h | 1 + ui/gl/gl_image_ozone_native_pixmap.h | 1 + ui/gl/gl_image_ref_counted_memory.h | 1 + ui/gl/gl_image_shared_memory.h | 1 + ui/gl/gl_image_stub.h | 1 + ui/gl/gl_image_surface_texture.h | 1 + ui/gl/gl_surface.h | 6 +++ ui/gl/gl_surface_egl.h | 1 + ui/gl/gl_surface_egl_x11.h | 1 + ui/gl/gl_surface_mac.cc | 1 + ui/gl/gl_surface_osmesa.h | 1 + ui/gl/gl_surface_stub.h | 1 + ui/gl/gl_surface_wgl.h | 1 + ui/gl/gl_tests.gyp | 1 + ui/gl/init/BUILD.gn | 23 ++++++++ ui/gl/init/gl_factory.cc | 49 +++++++++++++++++ ui/gl/init/gl_factory.h | 54 +++++++++++++++++++ ui/gl/init/gl_init.gyp | 30 +++++++++++ ui/gl/init/gl_init_export.h | 29 ++++++++++ ui/gl/test/gl_image_test_template.h | 7 +-- ui/ozone/demo/BUILD.gn | 1 + ui/ozone/demo/gl_renderer.cc | 5 +- ui/ozone/demo/ozone_demo.cc | 8 +-- ui/ozone/demo/ozone_demos.gyp | 1 + ui/surface/surface.gyp | 1 + ui/views/examples/BUILD.gn | 2 +- ui/views/examples/DEPS | 2 +- ui/views/examples/examples_main.cc | 4 +- 98 files changed, 384 insertions(+), 116 deletions(-) create mode 100644 ui/gl/init/BUILD.gn create mode 100644 ui/gl/init/gl_factory.cc create mode 100644 ui/gl/init/gl_factory.h create mode 100644 ui/gl/init/gl_init.gyp create mode 100644 ui/gl/init/gl_init_export.h diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn index 45e2732aab083d..6670def09f3d0f 100644 --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn @@ -589,6 +589,7 @@ source_set("common") { "//third_party/WebKit/public:blink", "//ui/events:gesture_detection", "//ui/gl", + "//ui/gl/init", "//ui/shell_dialogs", "//v8", ] diff --git a/android_webview/android_webview.gyp b/android_webview/android_webview.gyp index 4a4f85e7edaf56..1c79e44c5d6918 100644 --- a/android_webview/android_webview.gyp +++ b/android_webview/android_webview.gyp @@ -260,6 +260,7 @@ '../third_party/WebKit/public/blink.gyp:blink', '../ui/events/events.gyp:gesture_detection', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../ui/shell_dialogs/shell_dialogs.gyp:shell_dialogs', '../url/ipc/url_ipc.gyp:url_ipc', '../v8/src/v8.gyp:v8', diff --git a/android_webview/android_webview_tests.gypi b/android_webview/android_webview_tests.gypi index 35877b5a8caa4c..5e3b96261c32a8 100644 --- a/android_webview/android_webview_tests.gypi +++ b/android_webview/android_webview_tests.gypi @@ -136,6 +136,7 @@ '../testing/gtest.gyp:gtest', '../ui/base/ui_base.gyp:ui_base_jni_headers', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../ui/gl/gl.gyp:gl_test_support', 'android_webview_common', 'android_webview_unittests_jni', diff --git a/android_webview/browser/aw_gl_surface.h b/android_webview/browser/aw_gl_surface.h index d0c52200662c75..056851b41aa351 100644 --- a/android_webview/browser/aw_gl_surface.h +++ b/android_webview/browser/aw_gl_surface.h @@ -13,7 +13,7 @@ namespace android_webview { // This surface is used to represent the underlying surface provided by the App // inside a hardware draw. Note that offscreen contexts will not be using this // GLSurface. -class GL_EXPORT AwGLSurface : public gfx::GLSurface { +class AwGLSurface : public gfx::GLSurface { public: AwGLSurface(); diff --git a/android_webview/browser/scoped_app_gl_state_restore.cc b/android_webview/browser/scoped_app_gl_state_restore.cc index caa23879f6c312..0c6867f3cbf5c2 100644 --- a/android_webview/browser/scoped_app_gl_state_restore.cc +++ b/android_webview/browser/scoped_app_gl_state_restore.cc @@ -11,6 +11,7 @@ #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_surface_stub.h" +#include "ui/gl/init/gl_factory.h" namespace android_webview { @@ -22,9 +23,9 @@ class AppContextSurface { public: AppContextSurface() : surface(new gfx::GLSurfaceStub), - context(gfx::GLContext::CreateGLContext(NULL, - surface.get(), - gfx::PreferDiscreteGpu)) {} + context(gl::init::CreateGLContext(nullptr, + surface.get(), + gfx::PreferDiscreteGpu)) {} void MakeCurrent() { context->MakeCurrent(surface.get()); } private: diff --git a/android_webview/browser/test/fake_window.cc b/android_webview/browser/test/fake_window.cc index 3319db1f736224..4b63f741579de4 100644 --- a/android_webview/browser/test/fake_window.cc +++ b/android_webview/browser/test/fake_window.cc @@ -12,6 +12,7 @@ #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/init/gl_factory.h" namespace android_webview { @@ -192,11 +193,11 @@ void FakeWindow::CreateRenderThreadIfNeeded() { void FakeWindow::InitializeOnRT(base::WaitableEvent* sync) { CheckCurrentlyOnRT(); - surface_ = gfx::GLSurface::CreateOffscreenGLSurface(surface_size_); + surface_ = gl::init::CreateOffscreenGLSurface(surface_size_); DCHECK(surface_); DCHECK(surface_->GetHandle()); - context_ = gfx::GLContext::CreateGLContext(nullptr, surface_.get(), - gfx::PreferDiscreteGpu); + context_ = gl::init::CreateGLContext(nullptr, surface_.get(), + gfx::PreferDiscreteGpu); DCHECK(context_); sync->Signal(); } diff --git a/blimp/client/BUILD.gn b/blimp/client/BUILD.gn index d773b26a7a3856..e37f204f39a152 100644 --- a/blimp/client/BUILD.gn +++ b/blimp/client/BUILD.gn @@ -64,6 +64,7 @@ source_set("client") { "//third_party/libwebp", "//ui/gfx/geometry", "//ui/gl", + "//ui/gl/init", "//url:url", ] } diff --git a/blimp/client/app/blimp_startup.cc b/blimp/client/app/blimp_startup.cc index 71dad32988fdbd..0b45e9e4d6ec9a 100644 --- a/blimp/client/app/blimp_startup.cc +++ b/blimp/client/app/blimp_startup.cc @@ -15,7 +15,7 @@ #include "blimp/client/app/blimp_discardable_memory_allocator.h" #include "blimp/client/feature/compositor/decoding_image_generator.h" #include "third_party/skia/include/core/SkGraphics.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" class SkImageGenerator; @@ -73,7 +73,7 @@ bool InitializeMainMessageLoop() { // Set the DiscardableMemoryAllocator. base::DiscardableMemoryAllocator::SetInstance( g_discardable_memory_allocator.Pointer()); - if (!gfx::GLSurface::InitializeOneOff()) + if (!gl::init::InitializeGLOneOff()) return false; SkGraphics::Init(); SkGraphics::SetImageGeneratorFromEncodedFactory(CreateImageGenerator); diff --git a/components/mus/gles2/BUILD.gn b/components/mus/gles2/BUILD.gn index 7f2bb632a3c413..bfa0d5a8af3f84 100644 --- a/components/mus/gles2/BUILD.gn +++ b/components/mus/gles2/BUILD.gn @@ -50,6 +50,7 @@ source_set("gles2") { "//ui/gfx", "//ui/gfx/geometry", "//ui/gl", + "//ui/gl/init", "//ui/mojo/geometry:interfaces", ] diff --git a/components/mus/gles2/command_buffer_driver.cc b/components/mus/gles2/command_buffer_driver.cc index 5b44ca99453b30..49dea0689a4bbc 100644 --- a/components/mus/gles2/command_buffer_driver.cc +++ b/components/mus/gles2/command_buffer_driver.cc @@ -33,6 +33,7 @@ #include "ui/gl/gl_context.h" #include "ui/gl/gl_image_shared_memory.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #if defined(USE_OZONE) #include "ui/gl/gl_image_ozone_native_pixmap.h" @@ -86,16 +87,16 @@ bool CommandBufferDriver::Initialize( const bool offscreen = widget_ == gfx::kNullAcceleratedWidget; if (offscreen) { - surface_ = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(0, 0)); + surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size(0, 0)); } else { #if defined(USE_OZONE) scoped_refptr underlying_surface = - gfx::GLSurface::CreateSurfacelessViewGLSurface(widget_); + gl::init::CreateSurfacelessViewGLSurface(widget_); if (!underlying_surface) - underlying_surface = gfx::GLSurface::CreateViewGLSurface(widget_); + underlying_surface = gl::init::CreateViewGLSurface(widget_); #else scoped_refptr underlying_surface = - gfx::GLSurface::CreateViewGLSurface(widget_); + gl::init::CreateViewGLSurface(widget_); #endif scoped_refptr surface_adapter = new GLSurfaceAdapterMus(underlying_surface); @@ -117,7 +118,7 @@ bool CommandBufferDriver::Initialize( return false; // TODO(piman): virtual contexts, gpu preference. - context_ = gfx::GLContext::CreateGLContext( + context_ = gl::init::CreateGLContext( gpu_state_->share_group(), surface_.get(), gfx::PreferIntegratedGpu); if (!context_.get()) return false; diff --git a/components/mus/gles2/gpu_state.cc b/components/mus/gles2/gpu_state.cc index 3733ff8fe2d5a0..1ff542d1d5cee1 100644 --- a/components/mus/gles2/gpu_state.cc +++ b/components/mus/gles2/gpu_state.cc @@ -10,7 +10,7 @@ #include "base/threading/thread_restrictions.h" #include "gpu/config/gpu_info_collector.h" #include "ui/gl/gl_implementation.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #if defined(USE_OZONE) #include "ui/ozone/public/ozone_platform.h" @@ -48,7 +48,7 @@ void GpuState::InitializeOnGpuThread(base::WaitableEvent* event) { #if defined(USE_OZONE) ui::OzonePlatform::InitializeForGPU(); #endif - hardware_rendering_available_ = gfx::GLSurface::InitializeOneOff(); + hardware_rendering_available_ = gl::init::InitializeGLOneOff(); command_buffer_task_runner_ = new CommandBufferTaskRunner; driver_manager_.reset(new CommandBufferDriverManager); sync_point_manager_.reset(new gpu::SyncPointManager(true)); diff --git a/content/common/sandbox_mac.mm b/content/common/sandbox_mac.mm index 73fee33267ecf9..ab87ff4a0ce298 100644 --- a/content/common/sandbox_mac.mm +++ b/content/common/sandbox_mac.mm @@ -39,7 +39,7 @@ #include "sandbox/mac/seatbelt.h" #include "third_party/icu/source/common/unicode/uchar.h" #include "ui/base/layout.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" extern "C" { void CGSSetDenyWindowServerConnections(bool); @@ -329,7 +329,7 @@ NOINLINE void FatalStringQuoteException(const std::string& str) { if (sandbox_type == SANDBOX_TYPE_GPU) { // Preload either the desktop GL or the osmesa so, depending on the // --use-gl flag. - gfx::GLSurface::InitializeOneOff(); + gl::init::InitializeGLOneOff(); // Preload VideoToolbox. media::InitializeVideoToolbox(); diff --git a/content/content_common.gypi b/content/content_common.gypi index e480bdf5f6454a..f5927ad0d78508 100644 --- a/content/content_common.gypi +++ b/content/content_common.gypi @@ -45,6 +45,7 @@ '../ui/gfx/ipc/gfx_ipc.gyp:gfx_ipc', '../ui/gfx/ipc/skia/gfx_ipc_skia.gyp:gfx_ipc_skia', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../ui/shell_dialogs/shell_dialogs.gyp:shell_dialogs', '../url/url.gyp:url_lib', '../url/ipc/url_ipc.gyp:url_ipc', diff --git a/content/content_gpu.gypi b/content/content_gpu.gypi index a75555ff489ae5..041ae410078e2f 100644 --- a/content/content_gpu.gypi +++ b/content/content_gpu.gypi @@ -12,6 +12,7 @@ '../media/media.gyp:media_gpu', '../skia/skia.gyp:skia', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', 'content_common_mojo_bindings.gyp:content_common_mojo_bindings', ], 'sources': [ diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn index 63d8adf13dea5b..1b3aa771f486dc 100644 --- a/content/gpu/BUILD.gn +++ b/content/gpu/BUILD.gn @@ -63,6 +63,7 @@ source_set("gpu_sources") { "//ui/events/ipc", "//ui/gfx/ipc", "//ui/gl", + "//ui/gl/init", ] if (mojo_media_host == "gpu") { diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc index fe38be71de7725..fec981865de783 100644 --- a/content/gpu/gpu_child_thread.cc +++ b/content/gpu/gpu_child_thread.cc @@ -38,6 +38,7 @@ #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_switches.h" #include "ui/gl/gpu_switching_manager.h" +#include "ui/gl/init/gl_factory.h" #include "url/gurl.h" #if defined(USE_OZONE) @@ -199,8 +200,8 @@ GpuChildThread::GpuChildThread( base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kInProcessGPU)); - if (!gfx::GLSurface::InitializeOneOff()) - VLOG(1) << "gfx::GLSurface::InitializeOneOff failed"; + if (!gl::init::InitializeGLOneOff()) + VLOG(1) << "gl::init::InitializeGLOneOff failed"; g_thread_safe_sender.Get() = thread_safe_sender(); g_lazy_tls.Pointer()->Set(this); diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc index 7cfe9187ffcd03..8dec744b1b2785 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc @@ -42,6 +42,7 @@ #include "ui/gl/gl_surface.h" #include "ui/gl/gl_switches.h" #include "ui/gl/gpu_switching_manager.h" +#include "ui/gl/init/gl_factory.h" #if defined(OS_WIN) #include @@ -54,8 +55,8 @@ #endif #if defined(OS_WIN) -#include "base/win/windows_version.h" #include "base/win/scoped_com_initializer.h" +#include "base/win/windows_version.h" #include "media/gpu/dxva_video_decode_accelerator_win.h" #include "sandbox/win/src/sandbox.h" #endif @@ -275,13 +276,13 @@ int GpuMain(const MainFunctionParams& parameters) { bool gl_already_initialized = false; #if defined(OS_MACOSX) if (!command_line.HasSwitch(switches::kNoSandbox)) { - // On Mac, if the sandbox is enabled, then GLSurface::InitializeOneOff() + // On Mac, if the sandbox is enabled, then gl::init::InitializeGLOneOff() // is called from the sandbox warmup code before getting here. gl_already_initialized = true; } #endif if (command_line.HasSwitch(switches::kInProcessGPU)) { - // With in-process GPU, GLSurface::InitializeOneOff() is called from + // With in-process GPU, gl::init::InitializeGLOneOff() is called from // GpuChildThread before getting here. gl_already_initialized = true; } @@ -290,7 +291,7 @@ int GpuMain(const MainFunctionParams& parameters) { bool gl_initialized = gl_already_initialized ? gfx::GetGLImplementation() != gfx::kGLImplementationNone - : gfx::GLSurface::InitializeOneOff(); + : gl::init::InitializeGLOneOff(); if (gl_initialized) { // We need to collect GL strings (VENDOR, RENDERER) for blacklisting // purposes. However, on Mac we don't actually use them. As documented in @@ -334,7 +335,7 @@ int GpuMain(const MainFunctionParams& parameters) { UMA_HISTOGRAM_TIMES("GPU.CollectContextGraphicsInfo", collect_context_time); } else { // gl_initialized - VLOG(1) << "gfx::GLSurface::InitializeOneOff failed"; + VLOG(1) << "gl::init::InitializeGLOneOff failed"; dead_on_arrival = true; } @@ -524,18 +525,18 @@ bool CanAccessNvidiaDeviceFile() { void CreateDummyGlContext() { scoped_refptr surface( - gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size())); + gl::init::CreateOffscreenGLSurface(gfx::Size())); if (!surface.get()) { - DVLOG(1) << "gfx::GLSurface::CreateOffscreenGLSurface failed"; + DVLOG(1) << "gl::init::CreateOffscreenGLSurface failed"; return; } // On Linux, this is needed to make sure /dev/nvidiactl has // been opened and its descriptor cached. - scoped_refptr context(gfx::GLContext::CreateGLContext( - NULL, surface.get(), gfx::PreferDiscreteGpu)); + scoped_refptr context( + gl::init::CreateGLContext(NULL, surface.get(), gfx::PreferDiscreteGpu)); if (!context.get()) { - DVLOG(1) << "gfx::GLContext::CreateGLContext failed"; + DVLOG(1) << "gl::init::CreateGLContext failed"; return; } diff --git a/gpu/BUILD.gn b/gpu/BUILD.gn index 1759ef2907a9aa..9e96a4a131e9f8 100644 --- a/gpu/BUILD.gn +++ b/gpu/BUILD.gn @@ -391,6 +391,7 @@ test("gpu_perftests") { "//testing/perf", "//ui/gfx/geometry", "//ui/gl", + "//ui/gl/init", ] # This target should not require the Chrome executable to run. diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn index 7dd6ea433c2ffa..6a904130d7cf82 100644 --- a/gpu/command_buffer/service/BUILD.gn +++ b/gpu/command_buffer/service/BUILD.gn @@ -155,6 +155,7 @@ source_set("service_sources") { "//ui/gfx", "//ui/gfx/geometry", "//ui/gl", + "//ui/gl/init", ] if (is_mac) { diff --git a/gpu/command_buffer/service/in_process_command_buffer.cc b/gpu/command_buffer/service/in_process_command_buffer.cc index 5d4bb0cd97b45a..22d246856e7c01 100644 --- a/gpu/command_buffer/service/in_process_command_buffer.cc +++ b/gpu/command_buffer/service/in_process_command_buffer.cc @@ -44,6 +44,7 @@ #include "ui/gl/gl_image.h" #include "ui/gl/gl_image_shared_memory.h" #include "ui/gl/gl_share_group.h" +#include "ui/gl/init/gl_factory.h" #if defined(OS_WIN) #include @@ -342,9 +343,9 @@ bool InProcessCommandBuffer::InitializeOnGpuThread( if (!surface_.get()) { if (params.is_offscreen) - surface_ = gfx::GLSurface::CreateOffscreenGLSurface(params.size); + surface_ = gl::init::CreateOffscreenGLSurface(params.size); else - surface_ = gfx::GLSurface::CreateViewGLSurface(params.window); + surface_ = gl::init::CreateViewGLSurface(params.window); } if (!surface_.get()) { @@ -364,7 +365,7 @@ bool InProcessCommandBuffer::InitializeOnGpuThread( .use_virtualized_gl_contexts) { context_ = gl_share_group_->GetSharedContext(); if (!context_.get()) { - context_ = gfx::GLContext::CreateGLContext( + context_ = gl::init::CreateGLContext( gl_share_group_.get(), surface_.get(), params.gpu_preference); gl_share_group_->SetSharedContext(context_.get()); } @@ -377,8 +378,8 @@ bool InProcessCommandBuffer::InitializeOnGpuThread( context_ = NULL; } } else { - context_ = gfx::GLContext::CreateGLContext( - gl_share_group_.get(), surface_.get(), params.gpu_preference); + context_ = gl::init::CreateGLContext(gl_share_group_.get(), surface_.get(), + params.gpu_preference); } if (!context_.get()) { diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc index a52e20984c9d87..5ff6c8b4d65de2 100644 --- a/gpu/command_buffer/tests/gl_manager.cc +++ b/gpu/command_buffer/tests/gl_manager.cc @@ -43,6 +43,7 @@ #include "ui/gl/gl_image_ref_counted_memory.h" #include "ui/gl/gl_share_group.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #if defined(OS_MACOSX) #include "ui/gfx/mac/io_surface.h" @@ -312,7 +313,7 @@ void GLManager::InitializeWithCommandLine( decoder_->set_engine(executor_.get()); - surface_ = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); + surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); ASSERT_TRUE(surface_.get() != NULL) << "could not create offscreen surface"; if (base_context_) { @@ -327,9 +328,8 @@ void GLManager::InitializeWithCommandLine( ASSERT_TRUE(context_->Initialize( surface_.get(), gfx::PreferIntegratedGpu)); } else { - context_ = gfx::GLContext::CreateGLContext(share_group_.get(), - surface_.get(), - gpu_preference); + context_ = gl::init::CreateGLContext(share_group_.get(), surface_.get(), + gpu_preference); } } ASSERT_TRUE(context_.get() != NULL) << "could not create GL context"; @@ -392,12 +392,11 @@ void GLManager::SetupBaseContext() { new gfx::GLShareGroup); gfx::Size size(4, 4); base_surface_ = new scoped_refptr( - gfx::GLSurface::CreateOffscreenGLSurface(size)); + gl::init::CreateOffscreenGLSurface(size)); gfx::GpuPreference gpu_preference(gfx::PreferDiscreteGpu); - base_context_ = new scoped_refptr( - gfx::GLContext::CreateGLContext(base_share_group_->get(), - base_surface_->get(), - gpu_preference)); + base_context_ = + new scoped_refptr(gl::init::CreateGLContext( + base_share_group_->get(), base_surface_->get(), gpu_preference)); #endif } ++use_count_; diff --git a/gpu/command_buffer/tests/gl_tests_main.cc b/gpu/command_buffer/tests/gl_tests_main.cc index e2b93fd349091f..0c79c112f79d69 100644 --- a/gpu/command_buffer/tests/gl_tests_main.cc +++ b/gpu/command_buffer/tests/gl_tests_main.cc @@ -15,7 +15,7 @@ #include "gpu/config/gpu_info_collector.h" #include "gpu/config/gpu_util.h" #include "testing/gmock/include/gmock/gmock.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #if defined(OS_ANDROID) #include "base/android/jni_android.h" @@ -34,7 +34,7 @@ int RunHelper(base::TestSuite* testSuite) { gpu::CollectBasicGraphicsInfo(&gpu_info); gpu::ApplyGpuDriverBugWorkarounds(gpu_info, base::CommandLine::ForCurrentProcess()); - gfx::GLSurface::InitializeOneOff(); + gl::init::InitializeGLOneOff(); ::gles2::Initialize(); return testSuite->Run(); } diff --git a/gpu/command_buffer/tests/gl_unittests_android.cc b/gpu/command_buffer/tests/gl_unittests_android.cc index 9bdd503fd9d859..2767f1625fdfbc 100644 --- a/gpu/command_buffer/tests/gl_unittests_android.cc +++ b/gpu/command_buffer/tests/gl_unittests_android.cc @@ -17,6 +17,7 @@ #include "ui/gfx/native_widget_types.h" #include "ui/gl/android/surface_texture.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" namespace gpu { @@ -40,7 +41,7 @@ TEST_F(GLSurfaceTextureTest, SimpleTest) { EXPECT_TRUE(window != NULL); scoped_refptr gl_surface = - gfx::GLSurface::CreateViewGLSurface(window); + gl::init::CreateViewGLSurface(window); EXPECT_TRUE(gl_surface.get() != NULL); gl_.SetSurface(gl_surface.get()); diff --git a/gpu/command_buffer_service.gypi b/gpu/command_buffer_service.gypi index 895cf31bad7b78..6a86e49cc16d6b 100644 --- a/gpu/command_buffer_service.gypi +++ b/gpu/command_buffer_service.gypi @@ -22,6 +22,7 @@ '../ui/gfx/gfx.gyp:gfx', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '<(angle_path)/src/angle.gyp:commit_id', '<(angle_path)/src/angle.gyp:translator', ], diff --git a/gpu/config/BUILD.gn b/gpu/config/BUILD.gn index d75e1433adbe27..aa6fa7ea8f7b82 100644 --- a/gpu/config/BUILD.gn +++ b/gpu/config/BUILD.gn @@ -77,6 +77,7 @@ source_set("config_sources") { "//base", "//third_party/re2", "//ui/gl", + "//ui/gl/init", ] # Prefer mesa GL headers to system headers, which cause problems on Win. diff --git a/gpu/config/gpu_info_collector.cc b/gpu/config/gpu_info_collector.cc index 5ecbaba412042a..e07379c8dda326 100644 --- a/gpu/config/gpu_info_collector.cc +++ b/gpu/config/gpu_info_collector.cc @@ -24,12 +24,13 @@ #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface.h" #include "ui/gl/gl_version_info.h" +#include "ui/gl/init/gl_factory.h" namespace { scoped_refptr InitializeGLSurface() { scoped_refptr surface( - gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size())); + gl::init::CreateOffscreenGLSurface(gfx::Size())); if (!surface.get()) { LOG(ERROR) << "gfx::GLContext::CreateOffscreenGLSurface failed"; return NULL; @@ -39,13 +40,10 @@ scoped_refptr InitializeGLSurface() { } scoped_refptr InitializeGLContext(gfx::GLSurface* surface) { - scoped_refptr context( - gfx::GLContext::CreateGLContext(NULL, - surface, - gfx::PreferIntegratedGpu)); + gl::init::CreateGLContext(nullptr, surface, gfx::PreferIntegratedGpu)); if (!context.get()) { - LOG(ERROR) << "gfx::GLContext::CreateGLContext failed"; + LOG(ERROR) << "gl::init::CreateGLContext failed"; return NULL; } diff --git a/gpu/gles2_conform_support/egl/context.cc b/gpu/gles2_conform_support/egl/context.cc index 8bdd48d8103f9a..9228efa27597a4 100644 --- a/gpu/gles2_conform_support/egl/context.cc +++ b/gpu/gles2_conform_support/egl/context.cc @@ -19,6 +19,7 @@ #include "gpu/gles2_conform_support/egl/display.h" #include "gpu/gles2_conform_support/egl/surface.h" #include "gpu/gles2_conform_support/egl/thread_state.h" +#include "ui/gl/init/gl_factory.h" // The slight complexification in this file comes from following properties: // 1) Command buffer connection (context) can not be established without a @@ -271,8 +272,8 @@ bool Context::CreateService(gfx::GLSurface* gl_surface) { decoder->set_engine(command_executor.get()); - scoped_refptr gl_context(gfx::GLContext::CreateGLContext( - nullptr, gl_surface, gfx::PreferDiscreteGpu)); + scoped_refptr gl_context( + gl::init::CreateGLContext(nullptr, gl_surface, gfx::PreferDiscreteGpu)); if (!gl_context) return false; diff --git a/gpu/gles2_conform_support/egl/display.cc b/gpu/gles2_conform_support/egl/display.cc index b4e01587fd4144..f80820f6091d81 100644 --- a/gpu/gles2_conform_support/egl/display.cc +++ b/gpu/gles2_conform_support/egl/display.cc @@ -8,6 +8,7 @@ #include "gpu/gles2_conform_support/egl/context.h" #include "gpu/gles2_conform_support/egl/surface.h" #include "gpu/gles2_conform_support/egl/thread_state.h" +#include "ui/gl/init/gl_factory.h" namespace egl { @@ -178,8 +179,7 @@ EGLSurface Display::DoCreatePbufferSurface(ThreadState* ts, EGLint height) { lock_.AssertAcquired(); scoped_refptr gl_surface; - gl_surface = - gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size(width, height)); + gl_surface = gl::init::CreateOffscreenGLSurface(gfx::Size(width, height)); if (!gl_surface) return ts->ReturnError(EGL_BAD_ALLOC, nullptr); surfaces_.emplace_back(new Surface(gl_surface.get(), config)); @@ -214,7 +214,7 @@ EGLSurface Display::CreateWindowSurface(ThreadState* ts, return result; } scoped_refptr gl_surface; - gl_surface = gfx::GLSurface::CreateViewGLSurface(win); + gl_surface = gl::init::CreateViewGLSurface(win); if (!gl_surface) return ts->ReturnError(EGL_BAD_ALLOC, EGL_NO_SURFACE); surfaces_.emplace_back(new Surface(gl_surface.get(), config)); diff --git a/gpu/gles2_conform_support/egl/thread_state.cc b/gpu/gles2_conform_support/egl/thread_state.cc index 41593cb1d4a1dc..13c5f89d7d2d01 100644 --- a/gpu/gles2_conform_support/egl/thread_state.cc +++ b/gpu/gles2_conform_support/egl/thread_state.cc @@ -22,6 +22,7 @@ #include "gpu/gles2_conform_support/egl/test_support.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" // Thread local key for ThreadState instance. Accessed when holding g_egl_lock // only, since the initialization can not be Guaranteed otherwise. Not in @@ -83,7 +84,7 @@ egl::ThreadState* ThreadState::Get() { gpu::ApplyGpuDriverBugWorkarounds(gpu_info, command_line); } - gfx::GLSurface::InitializeOneOff(); + gl::init::InitializeGLOneOff(); } g_egl_default_display = new egl::Display(); diff --git a/gpu/gles2_conform_support/gles2_conform_support.gyp b/gpu/gles2_conform_support/gles2_conform_support.gyp index 0316ddbc246370..5f97bba044a935 100644 --- a/gpu/gles2_conform_support/gles2_conform_support.gyp +++ b/gpu/gles2_conform_support/gles2_conform_support.gyp @@ -35,6 +35,7 @@ '../../ui/base/ui_base.gyp:ui_base', '../../ui/gfx/gfx.gyp:gfx_geometry', '../../ui/gl/gl.gyp:gl', + '../../ui/gl/init/gl_init.gyp:gl_init', ], 'sources': [ 'egl/config.cc', diff --git a/gpu/gpu.gyp b/gpu/gpu.gyp index 027faedf3d5dbf..6aa0a274bc97ed 100644 --- a/gpu/gpu.gyp +++ b/gpu/gpu.gyp @@ -21,6 +21,7 @@ '../third_party/khronos/khronos.gyp:khronos_headers', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', 'command_buffer/command_buffer.gyp:gles2_utils', 'gles2_cmd_helper', ], @@ -50,6 +51,7 @@ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', ], 'defines': [ 'GL_IN_PROCESS_CONTEXT_IMPLEMENTATION', @@ -166,6 +168,7 @@ '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gfx/gfx.gyp:gfx_test_support', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../ui/gl/gl.gyp:gl_test_support', 'command_buffer/command_buffer.gyp:gles2_utils', 'command_buffer_client', @@ -319,6 +322,7 @@ '../third_party/mesa/mesa.gyp:mesa_headers', '../ui/gfx/gfx.gyp:gfx_test_support', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../ui/gl/gl.gyp:gl_unittest_utils', '../ui/gl/gl.gyp:gl_test_support', '../url/url.gyp:url_lib', @@ -371,6 +375,7 @@ '../testing/perf/perf_test.gyp:perf_test', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', 'command_buffer_service', ], 'sources': [ @@ -403,6 +408,7 @@ '../ui/gfx/gfx.gyp:gfx_test_support', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', 'command_buffer/command_buffer.gyp:gles2_utils', 'command_buffer_client', 'command_buffer_common', @@ -521,6 +527,7 @@ '../gpu/gpu.gyp:command_buffer_service', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', 'command_buffer/command_buffer.gyp:gles2_utils', 'gles2_c_lib', 'gles2_implementation', diff --git a/gpu/gpu_config.gypi b/gpu/gpu_config.gypi index df9b3599385005..5907ce15959bff 100644 --- a/gpu/gpu_config.gypi +++ b/gpu/gpu_config.gypi @@ -7,6 +7,7 @@ '../third_party/re2/re2.gyp:re2', '../base/base.gyp:base', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', ], 'include_dirs': [ '..', diff --git a/gpu/gpu_ipc_client.gypi b/gpu/gpu_ipc_client.gypi index f0ad3f23784aef..dfa6a99e8bbb1f 100644 --- a/gpu/gpu_ipc_client.gypi +++ b/gpu/gpu_ipc_client.gypi @@ -14,6 +14,7 @@ '../ui/gfx/ipc/geometry/gfx_ipc_geometry.gyp:gfx_ipc_geometry', '../ui/gfx/ipc/gfx_ipc.gyp:gfx_ipc', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../url/url.gyp:url_lib', '../url/ipc/url_ipc.gyp:url_ipc', ], diff --git a/gpu/gpu_ipc_common.gypi b/gpu/gpu_ipc_common.gypi index 6a4a41d58b3c6c..3bf9ec55cf0996 100644 --- a/gpu/gpu_ipc_common.gypi +++ b/gpu/gpu_ipc_common.gypi @@ -14,6 +14,7 @@ '../ui/gfx/ipc/geometry/gfx_ipc_geometry.gyp:gfx_ipc_geometry', '../ui/gfx/ipc/gfx_ipc.gyp:gfx_ipc', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../url/url.gyp:url_lib', '../url/ipc/url_ipc.gyp:url_ipc', ], diff --git a/gpu/gpu_ipc_service.gypi b/gpu/gpu_ipc_service.gypi index 443abbec1fe425..f2a86e2331ba58 100644 --- a/gpu/gpu_ipc_service.gypi +++ b/gpu/gpu_ipc_service.gypi @@ -11,6 +11,7 @@ '../ui/gfx/gfx.gyp:gfx', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../url/url.gyp:url_lib', ], 'include_dirs': [ diff --git a/gpu/ipc/service/BUILD.gn b/gpu/ipc/service/BUILD.gn index cc514a8b3eaf27..052a892bfda235 100644 --- a/gpu/ipc/service/BUILD.gn +++ b/gpu/ipc/service/BUILD.gn @@ -50,6 +50,7 @@ source_set("ipc_service_sources") { "//ui/gfx", "//ui/gfx/geometry", "//ui/gl", + "//ui/gl/init", "//url", ] deps = [ diff --git a/gpu/ipc/service/gpu_channel_manager.cc b/gpu/ipc/service/gpu_channel_manager.cc index f31f40ac685b1c..04487ede931b1a 100644 --- a/gpu/ipc/service/gpu_channel_manager.cc +++ b/gpu/ipc/service/gpu_channel_manager.cc @@ -27,6 +27,7 @@ #include "gpu/ipc/service/gpu_memory_manager.h" #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_share_group.h" +#include "ui/gl/init/gl_factory.h" namespace gpu { @@ -234,7 +235,7 @@ void GpuChannelManager::DestroyAllChannels() { gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { if (!default_offscreen_surface_.get()) { default_offscreen_surface_ = - gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); + gl::init::CreateOffscreenGLSurface(gfx::Size()); } return default_offscreen_surface_.get(); } diff --git a/gpu/ipc/service/gpu_command_buffer_stub.cc b/gpu/ipc/service/gpu_command_buffer_stub.cc index 6032dab373fe03..ae78f6c49885d6 100644 --- a/gpu/ipc/service/gpu_command_buffer_stub.cc +++ b/gpu/ipc/service/gpu_command_buffer_stub.cc @@ -38,9 +38,11 @@ #include "gpu/ipc/service/gpu_watchdog.h" #include "gpu/ipc/service/image_transport_surface.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context.h" #include "ui/gl/gl_image.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_switches.h" +#include "ui/gl/init/gl_factory.h" #if defined(OS_WIN) #include "base/win/win_util.h" @@ -563,8 +565,8 @@ void GpuCommandBufferStub::OnInitialize( if (use_virtualized_gl_context_ && share_group) { context = share_group->GetSharedContext(); if (!context.get()) { - context = gfx::GLContext::CreateGLContext( - share_group, + context = gl::init::CreateGLContext( + channel_->share_group(), channel_->gpu_channel_manager()->GetDefaultOffscreenSurface(), gpu_preference_); if (!context.get()) { @@ -595,8 +597,8 @@ void GpuCommandBufferStub::OnInitialize( } } if (!context.get()) { - context = gfx::GLContext::CreateGLContext( - share_group, surface_.get(), gpu_preference_); + context = + gl::init::CreateGLContext(share_group, surface_.get(), gpu_preference_); } if (!context.get()) { DLOG(ERROR) << "Failed to create context."; diff --git a/gpu/ipc/service/image_transport_surface_linux.cc b/gpu/ipc/service/image_transport_surface_linux.cc index 9f60d45be01076..24e21aeb88b443 100644 --- a/gpu/ipc/service/image_transport_surface_linux.cc +++ b/gpu/ipc/service/image_transport_surface_linux.cc @@ -5,6 +5,7 @@ #include "gpu/ipc/service/image_transport_surface.h" #include "gpu/ipc/service/pass_through_image_transport_surface.h" +#include "ui/gl/init/gl_factory.h" namespace gpu { @@ -17,10 +18,10 @@ scoped_refptr ImageTransportSurface::CreateNativeSurface( DCHECK_NE(surface_handle, kNullSurfaceHandle); scoped_refptr surface; #if defined(USE_OZONE) - surface = gfx::GLSurface::CreateSurfacelessViewGLSurface(surface_handle); + surface = gl::init::CreateSurfacelessViewGLSurface(surface_handle); #endif if (!surface) - surface = gfx::GLSurface::CreateViewGLSurface(surface_handle); + surface = gl::init::CreateViewGLSurface(surface_handle); if (!surface) return surface; return scoped_refptr(new PassThroughImageTransportSurface( diff --git a/gpu/ipc/service/image_transport_surface_win.cc b/gpu/ipc/service/image_transport_surface_win.cc index 7cc4454c818e0c..3bc4faed8d2ebd 100644 --- a/gpu/ipc/service/image_transport_surface_win.cc +++ b/gpu/ipc/service/image_transport_surface_win.cc @@ -12,6 +12,7 @@ #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface_egl.h" +#include "ui/gl/init/gl_factory.h" #include "ui/gl/vsync_provider_win.h" namespace gpu { @@ -37,7 +38,7 @@ scoped_refptr ImageTransportSurface::CreateNativeSurface( if (!egl_surface->Initialize(std::move(vsync_provider))) return nullptr; } else { - surface = gfx::GLSurface::CreateViewGLSurface(surface_handle); + surface = gl::init::CreateViewGLSurface(surface_handle); if (!surface) return nullptr; } diff --git a/gpu/perftests/texture_upload_perftest.cc b/gpu/perftests/texture_upload_perftest.cc index 3cbcd07a7ac395..86eeb021d2ff3c 100644 --- a/gpu/perftests/texture_upload_perftest.cc +++ b/gpu/perftests/texture_upload_perftest.cc @@ -25,6 +25,7 @@ #include "ui/gl/gl_surface.h" #include "ui/gl/gl_version_info.h" #include "ui/gl/gpu_timing.h" +#include "ui/gl/init/gl_factory.h" #include "ui/gl/scoped_make_current.h" #if defined(USE_OZONE) @@ -183,13 +184,13 @@ class TextureUploadPerfTest : public testing::Test { // thread. base::MessageLoopForUI main_loop; #endif - static bool gl_initialized = gfx::GLSurface::InitializeOneOff(); + static bool gl_initialized = gl::init::InitializeGLOneOff(); DCHECK(gl_initialized); // Initialize an offscreen surface and a gl context. - surface_ = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); - gl_context_ = gfx::GLContext::CreateGLContext(NULL, // share_group - surface_.get(), - gfx::PreferIntegratedGpu); + surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); + gl_context_ = + gl::init::CreateGLContext(nullptr, // share_group + surface_.get(), gfx::PreferIntegratedGpu); ui::ScopedMakeCurrent smc(gl_context_.get(), surface_.get()); glGenTextures(1, &color_texture_); glBindTexture(GL_TEXTURE_2D, color_texture_); diff --git a/gpu/tools/compositor_model_bench/BUILD.gn b/gpu/tools/compositor_model_bench/BUILD.gn index b074ee772ea0aa..fbef186806b01e 100644 --- a/gpu/tools/compositor_model_bench/BUILD.gn +++ b/gpu/tools/compositor_model_bench/BUILD.gn @@ -24,6 +24,7 @@ if (is_linux && !is_chromeos && target_cpu != "arm" && use_x11) { "//base", "//build/config/sanitizers:deps", "//ui/gl", + "//ui/gl/init", ] } } diff --git a/gpu/tools/compositor_model_bench/compositor_model_bench.cc b/gpu/tools/compositor_model_bench/compositor_model_bench.cc index 4d77353fa02bc4..dca35a7b3fa3ca 100644 --- a/gpu/tools/compositor_model_bench/compositor_model_bench.cc +++ b/gpu/tools/compositor_model_bench/compositor_model_bench.cc @@ -35,7 +35,7 @@ #include "gpu/tools/compositor_model_bench/render_model_utils.h" #include "gpu/tools/compositor_model_bench/render_models.h" #include "gpu/tools/compositor_model_bench/render_tree.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" using base::TimeTicks; using base::DirectoryExists; @@ -186,8 +186,8 @@ class Simulator { // Initialize the OpenGL context. bool InitGLContext() { - if (!gfx::GLSurface::InitializeOneOff()) { - LOG(FATAL) << "gfx::GLSurface::InitializeOneOff failed"; + if (!gl::init::InitializeGLOneOff()) { + LOG(FATAL) << "gl::init::InitializeGLOneOff failed"; return false; } diff --git a/gpu/tools/tools.gyp b/gpu/tools/tools.gyp index 342a76908820c6..c2109c137149dd 100644 --- a/gpu/tools/tools.gyp +++ b/gpu/tools/tools.gyp @@ -19,6 +19,7 @@ '../../base/base.gyp:base', '../../build/linux/system.gyp:x11', '../../ui/gl/gl.gyp:gl', + '../../ui/gl/init/gl_init.gyp:gl_init', ], 'libraries': [ '-lGL', diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn index 5ca89e27844842..3f5bb533e345ba 100644 --- a/media/gpu/BUILD.gn +++ b/media/gpu/BUILD.gn @@ -368,6 +368,7 @@ if (is_win || is_android || is_chromeos) { "//ui/gfx/geometry", "//ui/gl", "//ui/gl:test_support", + "//ui/gl/init", ] configs += [ "//third_party/khronos:khronos_headers" ] diff --git a/media/gpu/rendering_helper.cc b/media/gpu/rendering_helper.cc index b72dc10abc8af0..30b1a1edfed644 100644 --- a/media/gpu/rendering_helper.cc +++ b/media/gpu/rendering_helper.cc @@ -25,6 +25,7 @@ #include "ui/gl/gl_context.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #if defined(OS_WIN) #include @@ -194,7 +195,7 @@ void RenderingHelper::InitializeOneOff(base::WaitableEvent* done) { cmd_line->AppendSwitchASCII(switches::kUseGL, gfx::kGLImplementationEGLName); #endif - if (!gfx::GLSurface::InitializeOneOff()) + if (!gl::init::InitializeGLOneOff()) LOG(FATAL) << "Could not initialize GL"; done->Signal(); } @@ -329,14 +330,14 @@ void RenderingHelper::Initialize(const RenderingHelperParams& params, render_as_thumbnails_ = params.render_as_thumbnails; message_loop_ = base::MessageLoop::current(); - gl_surface_ = gfx::GLSurface::CreateViewGLSurface(window_); + gl_surface_ = gl::init::CreateViewGLSurface(window_); #if defined(USE_OZONE) gl_surface_->Resize(platform_window_delegate_->GetSize(), 1.f, true); #endif // defined(USE_OZONE) screen_size_ = gl_surface_->GetSize(); - gl_context_ = gfx::GLContext::CreateGLContext(NULL, gl_surface_.get(), - gfx::PreferIntegratedGpu); + gl_context_ = gl::init::CreateGLContext(nullptr, gl_surface_.get(), + gfx::PreferIntegratedGpu); CHECK(gl_context_->MakeCurrent(gl_surface_.get())); CHECK_GT(params.window_sizes.size(), 0U); diff --git a/media/media_gpu.gypi b/media/media_gpu.gypi index 364a3dd7ecaf4a..e21af3135dea75 100644 --- a/media/media_gpu.gypi +++ b/media/media_gpu.gypi @@ -13,6 +13,7 @@ '../ui/display/display.gyp:display_types', '../ui/gfx/gfx.gyp:gfx_geometry', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', '../ui/platform_window/platform_window.gyp:platform_window', ], 'sources': [ @@ -322,6 +323,7 @@ 'dependencies': [ '../media/media.gyp:media', '../ui/gl/gl.gyp:gl', + '../ui/gl/init/gl_init.gyp:gl_init', ], 'link_settings': { 'libraries': [ diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn index 32e747d29e0663..99b3b1f705ec05 100644 --- a/ui/aura/BUILD.gn +++ b/ui/aura/BUILD.gn @@ -243,7 +243,7 @@ executable("demo") { "//ui/events", "//ui/gfx", "//ui/gfx/geometry", - "//ui/gl", + "//ui/gl/init", ] if (use_x11) { diff --git a/ui/aura/aura.gyp b/ui/aura/aura.gyp index 2372dca16f1991..5b15beed62e27f 100644 --- a/ui/aura/aura.gyp +++ b/ui/aura/aura.gyp @@ -261,6 +261,7 @@ '../gfx/gfx.gyp:gfx', '../gfx/gfx.gyp:gfx_geometry', '../gl/gl.gyp:gl', + '../gl/init/gl_init.gyp:gl_init', 'aura_test_support', 'aura', ], diff --git a/ui/aura/demo/DEPS b/ui/aura/demo/DEPS index 04a064d6c3305e..305f5f68a817af 100644 --- a/ui/aura/demo/DEPS +++ b/ui/aura/demo/DEPS @@ -1,4 +1,4 @@ include_rules = [ "+ui/display", # Windows DPI Initialization. - "+ui/gl/gl_surface.h", # To initialize GL bindings. + "+ui/gl/init/gl_factory.h", # To initialize GL bindings. ] diff --git a/ui/aura/demo/demo_main.cc b/ui/aura/demo/demo_main.cc index 0c6867bb2f225b..8f52346cb533e6 100644 --- a/ui/aura/demo/demo_main.cc +++ b/ui/aura/demo/demo_main.cc @@ -29,7 +29,7 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/skia_util.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #if defined(USE_X11) #include "ui/gfx/x/x11_connection.h" // nogncheck @@ -130,7 +130,7 @@ int DemoMain() { gfx::InitializeThreadedX11(); #endif - gfx::GLSurface::InitializeOneOff(); + gl::init::InitializeGLOneOff(); #if defined(OS_WIN) display::win::SetDefaultDeviceScaleFactor(1.0f); diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn index 876f5c248fb081..304f04637e45e5 100644 --- a/ui/gl/BUILD.gn +++ b/ui/gl/BUILD.gn @@ -322,6 +322,7 @@ source_set("test_support") { public_deps = [ ":gl", + "//ui/gl/init", ] deps = [ "//testing/gtest", @@ -374,6 +375,7 @@ test("gl_unittests") { "//testing/gtest", "//ui/gfx", "//ui/gfx/geometry", + "//ui/gl/init", ] data_deps = [ diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py index 1b28d2a99c4a85..8771d1e7c610cb 100755 --- a/ui/gl/generate_bindings.py +++ b/ui/gl/generate_bindings.py @@ -1905,8 +1905,8 @@ def GenerateHeader(file, functions, set_name, file.write(LICENSE_AND_HEADER + """ -#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ -#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ +#ifndef UI_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ +#define UI_GL_GL_BINDINGS_AUTOGEN_%(name)s_H_ namespace gfx { @@ -1962,7 +1962,7 @@ class GLContext; (func['known_as'], set_name.lower(), func['known_as'])) file.write('\n') - file.write('#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_%s_H_\n' % + file.write('#endif // UI_GL_GL_BINDINGS_AUTOGEN_%s_H_\n' % set_name.upper()) diff --git a/ui/gl/gl.gyp b/ui/gl/gl.gyp index 2b84ea26de6864..7fa43f5deec377 100644 --- a/ui/gl/gl.gyp +++ b/ui/gl/gl.gyp @@ -311,6 +311,7 @@ '../../testing/gmock.gyp:gmock', '../../third_party/khronos/khronos.gyp:khronos_headers', 'gl', + 'init/gl_init.gyp:gl_init', ], 'include_dirs': [ '../..', @@ -332,6 +333,7 @@ '<(DEPTH)/testing/gtest.gyp:gtest', '../../third_party/khronos/khronos.gyp:khronos_headers', 'gl', + 'init/gl_init.gyp:gl_init', ], 'include_dirs': [ '../..', diff --git a/ui/gl/gl_bindings_autogen_egl.h b/ui/gl/gl_bindings_autogen_egl.h index 54d1269ebcbcbf..b3211928e13530 100644 --- a/ui/gl/gl_bindings_autogen_egl.h +++ b/ui/gl/gl_bindings_autogen_egl.h @@ -8,8 +8,8 @@ // clang-format -i -style=chromium filename // DO NOT EDIT! -#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_EGL_H_ -#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_EGL_H_ +#ifndef UI_GL_GL_BINDINGS_AUTOGEN_EGL_H_ +#define UI_GL_GL_BINDINGS_AUTOGEN_EGL_H_ namespace gfx { @@ -522,4 +522,4 @@ class GL_EXPORT EGLApi { #define eglWaitNative ::gfx::g_current_egl_context->eglWaitNativeFn #define eglWaitSyncKHR ::gfx::g_current_egl_context->eglWaitSyncKHRFn -#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_EGL_H_ +#endif // UI_GL_GL_BINDINGS_AUTOGEN_EGL_H_ diff --git a/ui/gl/gl_bindings_autogen_gl.h b/ui/gl/gl_bindings_autogen_gl.h index 7019e7d83d1f38..73ff63b9c57f26 100644 --- a/ui/gl/gl_bindings_autogen_gl.h +++ b/ui/gl/gl_bindings_autogen_gl.h @@ -8,8 +8,8 @@ // clang-format -i -style=chromium filename // DO NOT EDIT! -#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_GL_H_ -#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_GL_H_ +#ifndef UI_GL_GL_BINDINGS_AUTOGEN_GL_H_ +#define UI_GL_GL_BINDINGS_AUTOGEN_GL_H_ namespace gfx { @@ -2745,4 +2745,4 @@ class GL_EXPORT GLApi { #define glViewport ::gfx::g_current_gl_context->glViewportFn #define glWaitSync ::gfx::g_current_gl_context->glWaitSyncFn -#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_GL_H_ +#endif // UI_GL_GL_BINDINGS_AUTOGEN_GL_H_ diff --git a/ui/gl/gl_bindings_autogen_glx.h b/ui/gl/gl_bindings_autogen_glx.h index fe2ae416debb98..f9675b25cd981a 100644 --- a/ui/gl/gl_bindings_autogen_glx.h +++ b/ui/gl/gl_bindings_autogen_glx.h @@ -8,8 +8,8 @@ // clang-format -i -style=chromium filename // DO NOT EDIT! -#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_GLX_H_ -#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_GLX_H_ +#ifndef UI_GL_GL_BINDINGS_AUTOGEN_GLX_H_ +#define UI_GL_GL_BINDINGS_AUTOGEN_GLX_H_ namespace gfx { @@ -421,4 +421,4 @@ class GL_EXPORT GLXApi { #define glXWaitVideoSyncSGI ::gfx::g_current_glx_context->glXWaitVideoSyncSGIFn #define glXWaitX ::gfx::g_current_glx_context->glXWaitXFn -#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_GLX_H_ +#endif // UI_GL_GL_BINDINGS_AUTOGEN_GLX_H_ diff --git a/ui/gl/gl_bindings_autogen_osmesa.h b/ui/gl/gl_bindings_autogen_osmesa.h index 8a6bb6699a0804..9b88f6ba27c523 100644 --- a/ui/gl/gl_bindings_autogen_osmesa.h +++ b/ui/gl/gl_bindings_autogen_osmesa.h @@ -8,8 +8,8 @@ // clang-format -i -style=chromium filename // DO NOT EDIT! -#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ -#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ +#ifndef UI_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ +#define UI_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ namespace gfx { @@ -120,4 +120,4 @@ class GL_EXPORT OSMESAApi { #define OSMesaMakeCurrent ::gfx::g_current_osmesa_context->OSMesaMakeCurrentFn #define OSMesaPixelStore ::gfx::g_current_osmesa_context->OSMesaPixelStoreFn -#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ +#endif // UI_GL_GL_BINDINGS_AUTOGEN_OSMESA_H_ diff --git a/ui/gl/gl_bindings_autogen_wgl.h b/ui/gl/gl_bindings_autogen_wgl.h index b7a2040b9f7ef1..02d2fe98e10ce0 100644 --- a/ui/gl/gl_bindings_autogen_wgl.h +++ b/ui/gl/gl_bindings_autogen_wgl.h @@ -8,8 +8,8 @@ // clang-format -i -style=chromium filename // DO NOT EDIT! -#ifndef UI_GFX_GL_GL_BINDINGS_AUTOGEN_WGL_H_ -#define UI_GFX_GL_GL_BINDINGS_AUTOGEN_WGL_H_ +#ifndef UI_GL_GL_BINDINGS_AUTOGEN_WGL_H_ +#define UI_GL_GL_BINDINGS_AUTOGEN_WGL_H_ namespace gfx { @@ -144,4 +144,4 @@ class GL_EXPORT WGLApi { #define wglSwapIntervalEXT ::gfx::g_current_wgl_context->wglSwapIntervalEXTFn #define wglSwapLayerBuffers ::gfx::g_current_wgl_context->wglSwapLayerBuffersFn -#endif // UI_GFX_GL_GL_BINDINGS_AUTOGEN_WGL_H_ +#endif // UI_GL_GL_BINDINGS_AUTOGEN_WGL_H_ diff --git a/ui/gl/gl_context.h b/ui/gl/gl_context.h index 6d1420ded49568..368b0ec91c01f8 100644 --- a/ui/gl/gl_context.h +++ b/ui/gl/gl_context.h @@ -13,6 +13,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/synchronization/cancellation_flag.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_share_group.h" #include "ui/gl/gl_state_restorer.h" #include "ui/gl/gpu_preference.h" @@ -102,6 +103,7 @@ class GL_EXPORT GLContext : public base::RefCounted { // Create a GL context that is compatible with the given surface. // |share_group|, if non-NULL, is a group of contexts which the // internally created OpenGL context shares textures and other resources. + // DEPRECATED(kylechar): Use gl::init::CreateGLContext from gl_factory.h. static scoped_refptr CreateGLContext( GLShareGroup* share_group, GLSurface* compatible_surface, diff --git a/ui/gl/gl_context_osmesa.h b/ui/gl/gl_context_osmesa.h index d5612d652bb6e9..25fa5606b0ef73 100644 --- a/ui/gl/gl_context_osmesa.h +++ b/ui/gl/gl_context_osmesa.h @@ -8,6 +8,7 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "ui/gl/gl_context.h" +#include "ui/gl/gl_export.h" typedef struct osmesa_context* OSMesaContext; @@ -17,7 +18,7 @@ class GLShareGroup; class GLSurface; // Encapsulates an OSMesa OpenGL context that uses software rendering. -class GLContextOSMesa : public GLContextReal { +class GL_EXPORT GLContextOSMesa : public GLContextReal { public: explicit GLContextOSMesa(GLShareGroup* share_group); diff --git a/ui/gl/gl_context_stub.h b/ui/gl/gl_context_stub.h index 58854c850bb83d..ecee83004f2e4e 100644 --- a/ui/gl/gl_context_stub.h +++ b/ui/gl/gl_context_stub.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gl/gl_context.h" +#include "ui/gl/gl_export.h" namespace gfx { diff --git a/ui/gl/gl_context_stub_with_extensions.h b/ui/gl/gl_context_stub_with_extensions.h index 1bc1b3f9ebfedd..175dde94c85018 100644 --- a/ui/gl/gl_context_stub_with_extensions.h +++ b/ui/gl/gl_context_stub_with_extensions.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gl/gl_context_stub.h" +#include "ui/gl/gl_export.h" namespace gfx { diff --git a/ui/gl/gl_egl_api_implementation.h b/ui/gl/gl_egl_api_implementation.h index d09255f0eb666f..704762548f3a53 100644 --- a/ui/gl/gl_egl_api_implementation.h +++ b/ui/gl/gl_egl_api_implementation.h @@ -9,7 +9,7 @@ #include #include "base/compiler_specific.h" -#include "gl_bindings.h" +#include "ui/gl/gl_bindings.h" #include "ui/gl/gl_export.h" namespace base { diff --git a/ui/gl/gl_fence_apple.h b/ui/gl/gl_fence_apple.h index 5458e0d1c12100..c307a20bdd4a72 100644 --- a/ui/gl/gl_fence_apple.h +++ b/ui/gl/gl_fence_apple.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_fence.h" namespace gfx { diff --git a/ui/gl/gl_fence_arb.h b/ui/gl/gl_fence_arb.h index 3975efec7e1f68..e01b0cd1d12a2f 100644 --- a/ui/gl/gl_fence_arb.h +++ b/ui/gl/gl_fence_arb.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_fence.h" namespace gfx { diff --git a/ui/gl/gl_fence_egl.h b/ui/gl/gl_fence_egl.h index 5b6006c19721c5..5f68c8c1542b00 100644 --- a/ui/gl/gl_fence_egl.h +++ b/ui/gl/gl_fence_egl.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_fence.h" namespace gfx { diff --git a/ui/gl/gl_fence_nv.h b/ui/gl/gl_fence_nv.h index 488251b777a186..bf0761692232e0 100644 --- a/ui/gl/gl_fence_nv.h +++ b/ui/gl/gl_fence_nv.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_fence.h" namespace gfx { diff --git a/ui/gl/gl_image_egl.h b/ui/gl/gl_image_egl.h index b613182d7e4331..33f4de8ed89e81 100644 --- a/ui/gl/gl_image_egl.h +++ b/ui/gl/gl_image_egl.h @@ -8,6 +8,7 @@ #include "base/macros.h" #include "base/threading/thread_checker.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image.h" namespace gl { diff --git a/ui/gl/gl_image_io_surface.h b/ui/gl/gl_image_io_surface.h index f62d4a218e0dfa..5774e12fb645be 100644 --- a/ui/gl/gl_image_io_surface.h +++ b/ui/gl/gl_image_io_surface.h @@ -14,6 +14,7 @@ #include "base/threading/thread_checker.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/generic_shared_memory_id.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image.h" #if defined(__OBJC__) diff --git a/ui/gl/gl_image_memory.h b/ui/gl/gl_image_memory.h index 4f6db9a252ea05..6fd87b3fee630d 100644 --- a/ui/gl/gl_image_memory.h +++ b/ui/gl/gl_image_memory.h @@ -12,6 +12,7 @@ #include "base/macros.h" #include "base/numerics/safe_math.h" #include "ui/gfx/buffer_types.h" +#include "ui/gl/gl_export.h" namespace gl { diff --git a/ui/gl/gl_image_ozone_native_pixmap.h b/ui/gl/gl_image_ozone_native_pixmap.h index 469c04415af195..8a3575020640f2 100644 --- a/ui/gl/gl_image_ozone_native_pixmap.h +++ b/ui/gl/gl_image_ozone_native_pixmap.h @@ -8,6 +8,7 @@ #include #include "ui/gfx/buffer_types.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image_egl.h" #include "ui/ozone/public/native_pixmap.h" diff --git a/ui/gl/gl_image_ref_counted_memory.h b/ui/gl/gl_image_ref_counted_memory.h index 0d73dcd5fc96da..4c46372d1b4f0a 100644 --- a/ui/gl/gl_image_ref_counted_memory.h +++ b/ui/gl/gl_image_ref_counted_memory.h @@ -9,6 +9,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image_memory.h" namespace base { diff --git a/ui/gl/gl_image_shared_memory.h b/ui/gl/gl_image_shared_memory.h index b1f5f99482cce9..40cdfb3bd5a89c 100644 --- a/ui/gl/gl_image_shared_memory.h +++ b/ui/gl/gl_image_shared_memory.h @@ -13,6 +13,7 @@ #include "base/macros.h" #include "base/memory/shared_memory_handle.h" #include "ui/gfx/generic_shared_memory_id.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image_memory.h" namespace base { diff --git a/ui/gl/gl_image_stub.h b/ui/gl/gl_image_stub.h index 8edadb61950390..406dfa23fe828a 100644 --- a/ui/gl/gl_image_stub.h +++ b/ui/gl/gl_image_stub.h @@ -7,6 +7,7 @@ #include +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image.h" namespace gl { diff --git a/ui/gl/gl_image_surface_texture.h b/ui/gl/gl_image_surface_texture.h index c58ec8c7d8e179..52f575ae62e934 100644 --- a/ui/gl/gl_image_surface_texture.h +++ b/ui/gl/gl_image_surface_texture.h @@ -11,6 +11,7 @@ #include "base/memory/ref_counted.h" #include "base/threading/thread_checker.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_image.h" namespace gfx { diff --git a/ui/gl/gl_surface.h b/ui/gl/gl_surface.h index e72ec1189077c2..6a2a732408983e 100644 --- a/ui/gl/gl_surface.h +++ b/ui/gl/gl_surface.h @@ -129,6 +129,7 @@ class GL_EXPORT GLSurface : public base::RefCounted { virtual void CommitOverlayPlanesAsync(const SwapCompletionCallback& callback); // Initialize GL bindings. + // DEPRECATED(kylechar): Use gl::init::InitializeGLOneOff from gl_factory.h. static bool InitializeOneOff(); // Called after a context is made current with this surface. Returns false @@ -197,6 +198,7 @@ class GL_EXPORT GLSurface : public base::RefCounted { virtual bool BuffersFlipped() const; // Create a GL surface that renders directly to a view. + // DEPRECATED(kylechar): Use gl::init::CreateViewGLSurface from gl_factory.h. static scoped_refptr CreateViewGLSurface( gfx::AcceleratedWidget window); @@ -205,11 +207,15 @@ class GL_EXPORT GLSurface : public base::RefCounted { // semantics - there is no default framebuffer and the primary surface must // be presented as an overlay. If surfaceless mode is not supported or // enabled it will return a null pointer. + // DEPRECATED(kylechar): Use gl::init::CreateSurfacelessViewGLSurface from + // gl_factory.h. static scoped_refptr CreateSurfacelessViewGLSurface( gfx::AcceleratedWidget window); #endif // defined(USE_OZONE) // Create a GL surface used for offscreen rendering. + // DEPRECATED(kylechar): Use gl::init::CreateOffscreenGLSurface from + // gl_factory.h. static scoped_refptr CreateOffscreenGLSurface( const gfx::Size& size); diff --git a/ui/gl/gl_surface_egl.h b/ui/gl/gl_surface_egl.h index 373c655ec1ede8..4be8b2a5a2f400 100644 --- a/ui/gl/gl_surface_egl.h +++ b/ui/gl/gl_surface_egl.h @@ -20,6 +20,7 @@ #include "ui/gfx/geometry/size.h" #include "ui/gfx/vsync_provider.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_surface.h" #include "ui/gl/gl_surface_overlay.h" diff --git a/ui/gl/gl_surface_egl_x11.h b/ui/gl/gl_surface_egl_x11.h index 67c151eb698387..b7f0f3a9cfc143 100644 --- a/ui/gl/gl_surface_egl_x11.h +++ b/ui/gl/gl_surface_egl_x11.h @@ -11,6 +11,7 @@ #include "base/macros.h" #include "ui/events/platform/platform_event_dispatcher.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_surface_egl.h" namespace gfx { diff --git a/ui/gl/gl_surface_mac.cc b/ui/gl/gl_surface_mac.cc index 2da2b7226beeb8..52179c38860557 100644 --- a/ui/gl/gl_surface_mac.cc +++ b/ui/gl/gl_surface_mac.cc @@ -13,6 +13,7 @@ #include "base/trace_event/trace_event.h" #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_context.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface_osmesa.h" #include "ui/gl/gl_surface_stub.h" diff --git a/ui/gl/gl_surface_osmesa.h b/ui/gl/gl_surface_osmesa.h index e4f6ba9481233c..dee15ebfdff573 100644 --- a/ui/gl/gl_surface_osmesa.h +++ b/ui/gl/gl_surface_osmesa.h @@ -11,6 +11,7 @@ #include "base/macros.h" #include "ui/gfx/geometry/size.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_surface.h" namespace gfx { diff --git a/ui/gl/gl_surface_stub.h b/ui/gl/gl_surface_stub.h index 9115b7c1dcd0f7..13cfaf5b79d929 100644 --- a/ui/gl/gl_surface_stub.h +++ b/ui/gl/gl_surface_stub.h @@ -5,6 +5,7 @@ #ifndef UI_GL_GL_SURFACE_STUB_H_ #define UI_GL_GL_SURFACE_STUB_H_ +#include "ui/gl/gl_export.h" #include "ui/gl/gl_surface.h" namespace gfx { diff --git a/ui/gl/gl_surface_wgl.h b/ui/gl/gl_surface_wgl.h index 7466bcb0869495..dc323c1f8b7d31 100644 --- a/ui/gl/gl_surface_wgl.h +++ b/ui/gl/gl_surface_wgl.h @@ -7,6 +7,7 @@ #include "base/macros.h" #include "ui/gfx/native_widget_types.h" +#include "ui/gl/gl_export.h" #include "ui/gl/gl_surface.h" namespace gfx { diff --git a/ui/gl/gl_tests.gyp b/ui/gl/gl_tests.gyp index dfce7461f0ef66..a3cd88b0af84f2 100644 --- a/ui/gl/gl_tests.gyp +++ b/ui/gl/gl_tests.gyp @@ -29,6 +29,7 @@ '<(DEPTH)/ui/gfx/gfx.gyp:gfx', '<(DEPTH)/ui/gfx/gfx.gyp:gfx_geometry', '<(DEPTH)/ui/gl/gl.gyp:gl', + '<(DEPTH)/ui/gl/init/gl_init.gyp:gl_init', '<(DEPTH)/ui/gl/gl.gyp:gl_test_support', '<(DEPTH)/ui/gl/gl.gyp:gl_unittest_utils', ], diff --git a/ui/gl/init/BUILD.gn b/ui/gl/init/BUILD.gn new file mode 100644 index 00000000000000..844ee291e5d59c --- /dev/null +++ b/ui/gl/init/BUILD.gn @@ -0,0 +1,23 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +component("init") { + output_name = "gl_init" + + sources = [ + "gl_factory.cc", + "gl_factory.h", + "gl_init_export.h", + ] + defines = [ "GL_INIT_IMPLEMENTATION" ] + + deps = [ + "//base", + "//ui/gfx", + ] + + public_deps = [ + "//ui/gl", + ] +} diff --git a/ui/gl/init/gl_factory.cc b/ui/gl/init/gl_factory.cc new file mode 100644 index 00000000000000..09cb4ff2ba4dc7 --- /dev/null +++ b/ui/gl/init/gl_factory.cc @@ -0,0 +1,49 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/gl/init/gl_factory.h" + +#include "ui/gl/gl_context.h" +#include "ui/gl/gl_share_group.h" +#include "ui/gl/gl_surface.h" + +namespace gl { +namespace init { + +// TODO(kylechar): This file should be replaced with a platform specific +// version for X11, Ozone, Windows, Mac and Android. The implementation of each +// factory function should be moved into that file and the original static +// methods should be removed from GLSurface and GLContext. This file can then +// be deleted. + +bool InitializeGLOneOff() { + return gfx::GLSurface::InitializeOneOff(); +} + +scoped_refptr CreateGLContext( + gfx::GLShareGroup* share_group, + gfx::GLSurface* compatible_surface, + gfx::GpuPreference gpu_preference) { + return gfx::GLContext::CreateGLContext(share_group, compatible_surface, + gpu_preference); +} + +scoped_refptr CreateViewGLSurface( + gfx::AcceleratedWidget window) { + return gfx::GLSurface::CreateViewGLSurface(window); +} + +#if defined(USE_OZONE) +scoped_refptr CreateSurfacelessViewGLSurface( + gfx::AcceleratedWidget window) { + return gfx::GLSurface::CreateSurfacelessViewGLSurface(window); +} +#endif // defined(USE_OZONE) + +scoped_refptr CreateOffscreenGLSurface(const gfx::Size& size) { + return gfx::GLSurface::CreateOffscreenGLSurface(size); +} + +} // namespace init +} // namespace gl diff --git a/ui/gl/init/gl_factory.h b/ui/gl/init/gl_factory.h new file mode 100644 index 00000000000000..bdf6e294652711 --- /dev/null +++ b/ui/gl/init/gl_factory.h @@ -0,0 +1,54 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_GL_INIT_GL_FACTORY_H_ +#define UI_GL_INIT_GL_FACTORY_H_ + +#include "base/memory/ref_counted.h" +#include "ui/gfx/geometry/size.h" +#include "ui/gfx/native_widget_types.h" +#include "ui/gl/gpu_preference.h" +#include "ui/gl/init/gl_init_export.h" + +namespace gfx { +class GLContext; +class GLShareGroup; +class GLSurface; +}; + +namespace gl { +namespace init { + +// Initialize GL bindings. +GL_INIT_EXPORT bool InitializeGLOneOff(); + +// Create a GL context that is compatible with the given surface. |share_group|, +// if non-NULL, is a group of contexts which the internally created OpenGL +// context shares textures and other resources. +GL_INIT_EXPORT scoped_refptr CreateGLContext( + gfx::GLShareGroup* share_group, + gfx::GLSurface* compatible_surface, + gfx::GpuPreference gpu_preference); + +// Create a GL surface that renders directly to a view. +GL_INIT_EXPORT scoped_refptr CreateViewGLSurface( + gfx::AcceleratedWidget window); + +#if defined(USE_OZONE) +// Create a GL surface that renders directly into a window with surfaceless +// semantics - there is no default framebuffer and the primary surface must +// be presented as an overlay. If surfaceless mode is not supported or +// enabled it will return a null pointer. +GL_INIT_EXPORT scoped_refptr CreateSurfacelessViewGLSurface( + gfx::AcceleratedWidget window); +#endif // defined(USE_OZONE) + +// Create a GL surface used for offscreen rendering. +GL_INIT_EXPORT scoped_refptr CreateOffscreenGLSurface( + const gfx::Size& size); + +} // namespace init +} // namespace gl + +#endif // UI_GL_INIT_GL_FACTORY_H_ diff --git a/ui/gl/init/gl_init.gyp b/ui/gl/init/gl_init.gyp new file mode 100644 index 00000000000000..ba65c016268742 --- /dev/null +++ b/ui/gl/init/gl_init.gyp @@ -0,0 +1,30 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'chromium_code': 1, + }, + + 'targets': [ + { + 'target_name': 'gl_init', + 'type': '<(component)', + 'dependencies': [ + '../../../base/base.gyp:base', + '../../gfx/gfx.gyp:gfx', + '../../gfx/gfx.gyp:gfx_geometry', + '../gl.gyp:gl', + ], + 'defines': [ + 'GL_INIT_IMPLEMENTATION', + ], + 'sources': [ + 'gl_factory.cc', + 'gl_factory.h', + 'gl_init_export.h', + ], + }, + ], +} diff --git a/ui/gl/init/gl_init_export.h b/ui/gl/init/gl_init_export.h new file mode 100644 index 00000000000000..4523953d4fb10d --- /dev/null +++ b/ui/gl/init/gl_init_export.h @@ -0,0 +1,29 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_GL_INIT_GL_INIT_EXPORT_H_ +#define UI_GL_INIT_GL_INIT_EXPORT_H_ + +#if defined(COMPONENT_BUILD) +#if defined(WIN32) + +#if defined(GL_INIT_IMPLEMENTATION) +#define GL_INIT_EXPORT __declspec(dllexport) +#else +#define GL_INIT_EXPORT __declspec(dllimport) +#endif // defined(GL_INIT_IMPLEMENTATION) + +#else // defined(WIN32) +#if defined(GL_INIT_IMPLEMENTATION) +#define GL_INIT_EXPORT __attribute__((visibility("default"))) +#else +#define GL_INIT_EXPORT +#endif +#endif + +#else // defined(COMPONENT_BUILD) +#define GL_INIT_EXPORT +#endif + +#endif // UI_GL_INIT_GL_INIT_EXPORT_H_ diff --git a/ui/gl/test/gl_image_test_template.h b/ui/gl/test/gl_image_test_template.h index 4459200bf20109..543df8d735a7ce 100644 --- a/ui/gl/test/gl_image_test_template.h +++ b/ui/gl/test/gl_image_test_template.h @@ -24,6 +24,7 @@ #include "ui/gl/gl_image.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #include "ui/gl/test/gl_image_test_support.h" #include "ui/gl/test/gl_test_helper.h" @@ -125,9 +126,9 @@ class GLImageTest : public testing::Test { // Overridden from testing::Test: void SetUp() override { GLImageTestSupport::InitializeGL(); - surface_ = gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); - context_ = gfx::GLContext::CreateGLContext(nullptr, surface_.get(), - gfx::PreferIntegratedGpu); + surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); + context_ = gl::init::CreateGLContext(nullptr, surface_.get(), + gfx::PreferIntegratedGpu); context_->MakeCurrent(surface_.get()); } void TearDown() override { diff --git a/ui/ozone/demo/BUILD.gn b/ui/ozone/demo/BUILD.gn index c05bb92ee2e6dd..e904e197e1e6fe 100644 --- a/ui/ozone/demo/BUILD.gn +++ b/ui/ozone/demo/BUILD.gn @@ -32,6 +32,7 @@ executable("ozone_demo") { "//ui/events/ozone:events_ozone_layout", "//ui/gfx/geometry", "//ui/gl", + "//ui/gl/init", "//ui/ozone", "//ui/platform_window", ] diff --git a/ui/ozone/demo/gl_renderer.cc b/ui/ozone/demo/gl_renderer.cc index 9551f1eba50c85..93fe3d8e2fb6f4 100644 --- a/ui/ozone/demo/gl_renderer.cc +++ b/ui/ozone/demo/gl_renderer.cc @@ -10,6 +10,7 @@ #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" namespace ui { @@ -22,8 +23,8 @@ GlRenderer::~GlRenderer() { } bool GlRenderer::Initialize() { - context_ = gfx::GLContext::CreateGLContext(NULL, surface_.get(), - gfx::PreferIntegratedGpu); + context_ = gl::init::CreateGLContext(nullptr, surface_.get(), + gfx::PreferIntegratedGpu); if (!context_.get()) { LOG(ERROR) << "Failed to create GL context"; return false; diff --git a/ui/ozone/demo/ozone_demo.cc b/ui/ozone/demo/ozone_demo.cc index f3933137ea8021..f3a0e4bb632a5c 100644 --- a/ui/ozone/demo/ozone_demo.cc +++ b/ui/ozone/demo/ozone_demo.cc @@ -22,6 +22,7 @@ #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" #include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #include "ui/ozone/demo/gl_renderer.h" #include "ui/ozone/demo/software_renderer.h" #include "ui/ozone/demo/surfaceless_gl_renderer.h" @@ -45,9 +46,9 @@ class DemoWindow; scoped_refptr CreateGLSurface(gfx::AcceleratedWidget widget) { scoped_refptr surface; if (!base::CommandLine::ForCurrentProcess()->HasSwitch(kDisableSurfaceless)) - surface = gfx::GLSurface::CreateSurfacelessViewGLSurface(widget); + surface = gl::init::CreateSurfacelessViewGLSurface(widget); if (!surface) - surface = gfx::GLSurface::CreateViewGLSurface(widget); + surface = gl::init::CreateViewGLSurface(widget); return surface; } @@ -197,8 +198,7 @@ RendererFactory::~RendererFactory() { bool RendererFactory::Initialize() { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - if (!command_line->HasSwitch(kDisableGpu) && - gfx::GLSurface::InitializeOneOff() && + if (!command_line->HasSwitch(kDisableGpu) && gl::init::InitializeGLOneOff() && gpu_helper_.Initialize(base::ThreadTaskRunnerHandle::Get(), base::ThreadTaskRunnerHandle::Get())) { type_ = GL; diff --git a/ui/ozone/demo/ozone_demos.gyp b/ui/ozone/demo/ozone_demos.gyp index 4e7a8c09d88c94..7f860a5e6517c2 100644 --- a/ui/ozone/demo/ozone_demos.gyp +++ b/ui/ozone/demo/ozone_demos.gyp @@ -16,6 +16,7 @@ '../../../ui/events/ozone/events_ozone.gyp:events_ozone_layout', '../../../ui/gfx/gfx.gyp:gfx_geometry', '../../../ui/gl/gl.gyp:gl', + '../../../ui/gl/init/gl_init.gyp:gl_init', '../../../ui/ozone/ozone.gyp:ozone', '../../../ui/ozone/ozone.gyp:ozone_base', ], diff --git a/ui/surface/surface.gyp b/ui/surface/surface.gyp index e45e2ae888a524..f4be6f7586007b 100644 --- a/ui/surface/surface.gyp +++ b/ui/surface/surface.gyp @@ -26,6 +26,7 @@ '../base/ui_base.gyp:ui_base', '../gfx/gfx.gyp:gfx_geometry', '../gl/gl.gyp:gl', + '../gl/init/gl_init.gyp:gl_init', ], 'sources': [ 'surface_export.h', diff --git a/ui/views/examples/BUILD.gn b/ui/views/examples/BUILD.gn index 6aed028f713f54..5e1cfb6492c01c 100644 --- a/ui/views/examples/BUILD.gn +++ b/ui/views/examples/BUILD.gn @@ -110,7 +110,7 @@ executable("views_examples_exe") { "//ui/compositor", "//ui/compositor:test_support", "//ui/gfx", - "//ui/gl", + "//ui/gl/init", "//ui/resources:ui_test_pak", "//ui/views", "//ui/views:test_support", diff --git a/ui/views/examples/DEPS b/ui/views/examples/DEPS index 06e440bbb91caa..47e7bcdb2eb238 100644 --- a/ui/views/examples/DEPS +++ b/ui/views/examples/DEPS @@ -2,6 +2,6 @@ include_rules = [ "+content/public", "+content/shell", "+sandbox", - "+ui/gl/gl_surface.h", # To initialize GL bindings. + "+ui/gl/init/gl_factory.h", # To initialize GL bindings. "+ui/views_content_client", ] diff --git a/ui/views/examples/examples_main.cc b/ui/views/examples/examples_main.cc index 8151ed723141a2..d3889a89a95e1f 100644 --- a/ui/views/examples/examples_main.cc +++ b/ui/views/examples/examples_main.cc @@ -21,7 +21,7 @@ #include "ui/base/ui_base_paths.h" #include "ui/compositor/test/in_process_context_factory.h" #include "ui/display/screen.h" -#include "ui/gl/gl_surface.h" +#include "ui/gl/init/gl_factory.h" #include "ui/views/examples/example_base.h" #include "ui/views/examples/examples_window.h" #include "ui/views/test/desktop_test_views_delegate.h" @@ -59,7 +59,7 @@ int main(int argc, char** argv) { gfx::InitializeThreadedX11(); #endif - gfx::GLSurface::InitializeOneOff(); + gl::init::InitializeGLOneOff(); // The ContextFactory must exist before any Compositors are created. bool context_factory_for_test = false;