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}
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index 45e2732..6670def 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -589,6 +589,7 @@
"//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 4a4f85e..1c79e44 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 35877b5..5e3b962 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 d0c5220..056851b 100644
--- a/android_webview/browser/aw_gl_surface.h
+++ b/android_webview/browser/aw_gl_surface.h
@@ -13,7 +13,7 @@
// 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 caa23879..0c6867f 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 @@
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 3319db1..4b63f74 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::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 d773b26..e37f204 100644
--- a/blimp/client/BUILD.gn
+++ b/blimp/client/BUILD.gn
@@ -64,6 +64,7 @@
"//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 71dad32..0b45e9e 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 @@
// 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 7f2bb63..bfa0d5a 100644
--- a/components/mus/gles2/BUILD.gn
+++ b/components/mus/gles2/BUILD.gn
@@ -50,6 +50,7 @@
"//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 5b44ca99..49dea068 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 @@
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<gfx::GLSurface> 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<gfx::GLSurface> underlying_surface =
- gfx::GLSurface::CreateViewGLSurface(widget_);
+ gl::init::CreateViewGLSurface(widget_);
#endif
scoped_refptr<GLSurfaceAdapterMus> surface_adapter =
new GLSurfaceAdapterMus(underlying_surface);
@@ -117,7 +118,7 @@
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 3733ff8..1ff542d 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 @@
#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 73fee33..ab87ff4a 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 @@
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 e480bdf..f5927ad0 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 a75555f..041ae41 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 63d8adf1..1b3aa77 100644
--- a/content/gpu/BUILD.gn
+++ b/content/gpu/BUILD.gn
@@ -63,6 +63,7 @@
"//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 fe38be7..fec9818 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 @@
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 7cfe918..8dec744 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 <dwmapi.h>
@@ -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 @@
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 @@
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 @@
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 @@
void CreateDummyGlContext() {
scoped_refptr<gfx::GLSurface> 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<gfx::GLContext> context(gfx::GLContext::CreateGLContext(
- NULL, surface.get(), gfx::PreferDiscreteGpu));
+ scoped_refptr<gfx::GLContext> 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 1759ef2..9e96a4a 100644
--- a/gpu/BUILD.gn
+++ b/gpu/BUILD.gn
@@ -391,6 +391,7 @@
"//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 7dd6ea4..6a90413 100644
--- a/gpu/command_buffer/service/BUILD.gn
+++ b/gpu/command_buffer/service/BUILD.gn
@@ -155,6 +155,7 @@
"//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 5d4bb0c..22d2468 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 <windows.h>
@@ -342,9 +343,9 @@
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 @@
.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 @@
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 a52e209..5ff6c8b 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 @@
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 @@
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 @@
new gfx::GLShareGroup);
gfx::Size size(4, 4);
base_surface_ = new scoped_refptr<gfx::GLSurface>(
- gfx::GLSurface::CreateOffscreenGLSurface(size));
+ gl::init::CreateOffscreenGLSurface(size));
gfx::GpuPreference gpu_preference(gfx::PreferDiscreteGpu);
- base_context_ = new scoped_refptr<gfx::GLContext>(
- gfx::GLContext::CreateGLContext(base_share_group_->get(),
- base_surface_->get(),
- gpu_preference));
+ base_context_ =
+ new scoped_refptr<gfx::GLContext>(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 e2b93fd..0c79c11 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 @@
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 9bdd503..2767f16 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 @@
EXPECT_TRUE(window != NULL);
scoped_refptr<gfx::GLSurface> 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 895cf31b..6a86e49 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 d75e143..aa6fa7ea 100644
--- a/gpu/config/BUILD.gn
+++ b/gpu/config/BUILD.gn
@@ -77,6 +77,7 @@
"//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 5ecbaba..e07379c 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<gfx::GLSurface> InitializeGLSurface() {
scoped_refptr<gfx::GLSurface> 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<gfx::GLContext> InitializeGLContext(gfx::GLSurface* surface) {
-
scoped_refptr<gfx::GLContext> 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 8bdd48d..9228efa 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 @@
decoder->set_engine(command_executor.get());
- scoped_refptr<gfx::GLContext> gl_context(gfx::GLContext::CreateGLContext(
- nullptr, gl_surface, gfx::PreferDiscreteGpu));
+ scoped_refptr<gfx::GLContext> 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 b4e01587..f80820f6 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 @@
EGLint height) {
lock_.AssertAcquired();
scoped_refptr<gfx::GLSurface> 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 @@
return result;
}
scoped_refptr<gfx::GLSurface> 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 41593cb..13c5f89 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 @@
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 0316ddb..5f97bba 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 027faedf..6aa0a27 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 df9b3599..5907ce1 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 f0ad3f2..dfa6a99 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 6a4a41d..3bf9ec5 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 443abbe..f2a86e2 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 cc514a8..052a892 100644
--- a/gpu/ipc/service/BUILD.gn
+++ b/gpu/ipc/service/BUILD.gn
@@ -50,6 +50,7 @@
"//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 f31f40a..04487ed 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 @@
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 6032dab..ae78f6c 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 @@
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 @@
}
}
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 9f60d45..24e21ae 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 @@
DCHECK_NE(surface_handle, kNullSurfaceHandle);
scoped_refptr<gfx::GLSurface> 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<gfx::GLSurface>(new PassThroughImageTransportSurface(
diff --git a/gpu/ipc/service/image_transport_surface_win.cc b/gpu/ipc/service/image_transport_surface_win.cc
index 7cc4454..3bc4fae 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 @@
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 3cbcd07..86eeb021d 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 @@
// 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 b074ee77..fbef186 100644
--- a/gpu/tools/compositor_model_bench/BUILD.gn
+++ b/gpu/tools/compositor_model_bench/BUILD.gn
@@ -24,6 +24,7 @@
"//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 4d77353..dca35a7 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 @@
// 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 342a769..c2109c13 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 5ca89e2..3f5bb533 100644
--- a/media/gpu/BUILD.gn
+++ b/media/gpu/BUILD.gn
@@ -368,6 +368,7 @@
"//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 b72dc10..30b1a1e 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 <windows.h>
@@ -194,7 +195,7 @@
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 @@
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 364a3dd..e21af31 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 32e747d..99b3b1f 100644
--- a/ui/aura/BUILD.gn
+++ b/ui/aura/BUILD.gn
@@ -243,7 +243,7 @@
"//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 2372dca..5b15beed 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 04a064d..305f5f6 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 0c6867b..8f52346 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 @@
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 876f5c2..304f046 100644
--- a/ui/gl/BUILD.gn
+++ b/ui/gl/BUILD.gn
@@ -322,6 +322,7 @@
public_deps = [
":gl",
+ "//ui/gl/init",
]
deps = [
"//testing/gtest",
@@ -374,6 +375,7 @@
"//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 1b28d2a..8771d1e 100755
--- a/ui/gl/generate_bindings.py
+++ b/ui/gl/generate_bindings.py
@@ -1905,8 +1905,8 @@
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 @@
(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 2b84ea2..7fa43f5 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 54d1269..b321192 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 @@
#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 7019e7d..73ff63b 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 @@
#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 fe2ae41..f9675b2 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 @@
#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 8a6bb66..9b88f6b 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 @@
#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 b7a2040..02d2fe9 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 @@
#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 6d1420ded4..368b0ec9 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 @@
// 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<GLContext> CreateGLContext(
GLShareGroup* share_group,
GLSurface* compatible_surface,
diff --git a/ui/gl/gl_context_osmesa.h b/ui/gl/gl_context_osmesa.h
index d5612d6..25fa560 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 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 58854c8..ecee830 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 1bc1b3f..175dde9 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 d09255f0..7047625 100644
--- a/ui/gl/gl_egl_api_implementation.h
+++ b/ui/gl/gl_egl_api_implementation.h
@@ -9,7 +9,7 @@
#include <vector>
#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 5458e0d1..c307a20b 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 3975efe..e01b0cd 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 5b6006c..5f68c8c1 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 488251b..bf07616 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 b613182..33f4de8 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 f62d4a2..5774e12 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 4f6db9a2..6fd87b3 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 469c044..8a35750 100644
--- a/ui/gl/gl_image_ozone_native_pixmap.h
+++ b/ui/gl/gl_image_ozone_native_pixmap.h
@@ -8,6 +8,7 @@
#include <stdint.h>
#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 0d73dcd..4c46372 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 b1f5f994..40cdfb3 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 8edadb6..406dfa2 100644
--- a/ui/gl/gl_image_stub.h
+++ b/ui/gl/gl_image_stub.h
@@ -7,6 +7,7 @@
#include <stdint.h>
+#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 c58ec8c7..52f575a 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 e72ec11..6a2a7324 100644
--- a/ui/gl/gl_surface.h
+++ b/ui/gl/gl_surface.h
@@ -129,6 +129,7 @@
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 @@
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<GLSurface> CreateViewGLSurface(
gfx::AcceleratedWidget window);
@@ -205,11 +207,15 @@
// 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<GLSurface> 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<GLSurface> CreateOffscreenGLSurface(
const gfx::Size& size);
diff --git a/ui/gl/gl_surface_egl.h b/ui/gl/gl_surface_egl.h
index 373c655..4be8b2a 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 67c151eb..b7f0f3a 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 2da2b72..52179c3 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 e4f6ba9..dee15eb 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 9115b7c1..13cfaf5 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 7466bcb..dc323c1 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 dfce746..a3cd88b0 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 0000000..844ee29
--- /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 0000000..09cb4ff
--- /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<gfx::GLContext> 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<gfx::GLSurface> CreateViewGLSurface(
+ gfx::AcceleratedWidget window) {
+ return gfx::GLSurface::CreateViewGLSurface(window);
+}
+
+#if defined(USE_OZONE)
+scoped_refptr<gfx::GLSurface> CreateSurfacelessViewGLSurface(
+ gfx::AcceleratedWidget window) {
+ return gfx::GLSurface::CreateSurfacelessViewGLSurface(window);
+}
+#endif // defined(USE_OZONE)
+
+scoped_refptr<gfx::GLSurface> 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 0000000..bdf6e29
--- /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<gfx::GLContext> 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<gfx::GLSurface> 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<gfx::GLSurface> CreateSurfacelessViewGLSurface(
+ gfx::AcceleratedWidget window);
+#endif // defined(USE_OZONE)
+
+// Create a GL surface used for offscreen rendering.
+GL_INIT_EXPORT scoped_refptr<gfx::GLSurface> 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 0000000..ba65c01
--- /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 0000000..4523953
--- /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 4459200b..543df8d7 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 @@
// 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 c05bb92..e904e19 100644
--- a/ui/ozone/demo/BUILD.gn
+++ b/ui/ozone/demo/BUILD.gn
@@ -32,6 +32,7 @@
"//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 9551f1e..93fe3d8 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 @@
}
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 f3933137..f3a0e4b 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 @@
scoped_refptr<gfx::GLSurface> CreateGLSurface(gfx::AcceleratedWidget widget) {
scoped_refptr<gfx::GLSurface> 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 @@
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 4e7a8c0..7f860a5 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 e45e2ae8..f4be6f7 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 6aed028f..5e1cfb6 100644
--- a/ui/views/examples/BUILD.gn
+++ b/ui/views/examples/BUILD.gn
@@ -110,7 +110,7 @@
"//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 06e440bb..47e7bcd 100644
--- a/ui/views/examples/DEPS
+++ b/ui/views/examples/DEPS
@@ -2,6 +2,6 @@
"+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 8151ed72..d3889a8 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 @@
gfx::InitializeThreadedX11();
#endif
- gfx::GLSurface::InitializeOneOff();
+ gl::init::InitializeGLOneOff();
// The ContextFactory must exist before any Compositors are created.
bool context_factory_for_test = false;