diff options
Diffstat (limited to 'src/core/ozone')
-rw-r--r-- | src/core/ozone/gl_surface_egl_qt.cpp | 19 | ||||
-rw-r--r-- | src/core/ozone/gl_surface_glx_qt.cpp | 13 | ||||
-rw-r--r-- | src/core/ozone/gl_surface_qt.cpp | 11 | ||||
-rw-r--r-- | src/core/ozone/gl_surface_qt.h | 4 | ||||
-rw-r--r-- | src/core/ozone/gl_surface_wgl_qt.cpp | 4 | ||||
-rw-r--r-- | src/core/ozone/gl_surface_wgl_qt.h | 2 |
6 files changed, 31 insertions, 22 deletions
diff --git a/src/core/ozone/gl_surface_egl_qt.cpp b/src/core/ozone/gl_surface_egl_qt.cpp index a5821ae0d..bd9ec060e 100644 --- a/src/core/ozone/gl_surface_egl_qt.cpp +++ b/src/core/ozone/gl_surface_egl_qt.cpp @@ -11,6 +11,7 @@ #if !BUILDFLAG(IS_MAC) #include "ui/gl/egl_util.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_display.h" #include "ui/gl/gl_surface_egl.h" #include "ui/gl/init/gl_factory.h" @@ -31,7 +32,7 @@ bool GLSurfaceEGL::InitializeExtensionSettingsOneOff() EGLDisplay GLSurfaceEGL::GetHardwareDisplay() { - return static_cast<EGLDisplay>(GLSurfaceQt::g_display); + return GLSurfaceQt::g_display ? static_cast<EGLDisplay>(GLSurfaceQt::g_display->GetDisplay()) : EGL_NO_DISPLAY; } bool GLSurfaceEGL::IsCreateContextRobustnessSupported() @@ -141,7 +142,7 @@ bool GLSurfaceEGL::HasEGLExtension(const char *name) return ExtensionsContain(GetEGLExtensions(), name); } -bool GLSurfaceEGL::InitializeOneOff(gl::EGLDisplayPlatform /*native_display*/) +bool GLSurfaceEGL::InitializeOneOff(gl::EGLDisplayPlatform /*native_display*/, uint64_t) { return GLSurfaceEGLQt::InitializeOneOff(); } @@ -188,8 +189,10 @@ bool GLSurfaceEGLQt::InitializeOneOff() // Must be called before initializing the display. g_driver_egl.InitializeClientExtensionBindings(); - g_display = GLContextHelper::getEGLDisplay(); - if (!g_display) { + auto *egl_display = new GLDisplayEGL(); + g_display = egl_display; + egl_display->SetDisplay(GLContextHelper::getEGLDisplay()); + if (!g_display->GetDisplay()) { LOG(ERROR) << "GLContextHelper::getEGLDisplay() failed."; return false; } @@ -200,13 +203,13 @@ bool GLSurfaceEGLQt::InitializeOneOff() return false; } - if (!eglInitialize(g_display, NULL, NULL)) { + if (!eglInitialize(g_display->GetDisplay(), NULL, NULL)) { LOG(ERROR) << "eglInitialize failed with error " << GetLastEGLErrorString(); return false; } g_client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS); - g_extensions = eglQueryString(g_display, EGL_EXTENSIONS); + g_extensions = eglQueryString(g_display->GetDisplay(), EGL_EXTENSIONS); g_egl_surfaceless_context_supported = ExtensionsContain(g_extensions.c_str(), "EGL_KHR_surfaceless_context"); if (g_egl_surfaceless_context_supported) { scoped_refptr<GLSurface> surface = new GLSurfacelessQtEGL(gfx::Size(1, 1)); @@ -242,7 +245,7 @@ bool GLSurfaceEGLQt::Initialize(GLSurfaceFormat format) Q_ASSERT(!m_surfaceBuffer); m_format = format; - EGLDisplay display = g_display; + EGLDisplay display = g_display->GetDisplay(); if (!display) { LOG(ERROR) << "Trying to create surface with invalid display."; return false; @@ -270,7 +273,7 @@ bool GLSurfaceEGLQt::Initialize(GLSurfaceFormat format) void GLSurfaceEGLQt::Destroy() { if (m_surfaceBuffer) { - if (!eglDestroySurface(g_display, m_surfaceBuffer)) + if (!eglDestroySurface(g_display->GetDisplay(), m_surfaceBuffer)) LOG(ERROR) << "eglDestroySurface failed with error " << GetLastEGLErrorString(); m_surfaceBuffer = 0; diff --git a/src/core/ozone/gl_surface_glx_qt.cpp b/src/core/ozone/gl_surface_glx_qt.cpp index 757662211..f97f3de1e 100644 --- a/src/core/ozone/gl_surface_glx_qt.cpp +++ b/src/core/ozone/gl_surface_glx_qt.cpp @@ -8,6 +8,7 @@ #include "gl_context_qt.h" #include "ozone/gl_surface_glx_qt.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_display.h" #include "ui/gl/gl_surface_glx.h" namespace gl { @@ -90,8 +91,8 @@ bool GLSurfaceGLXQt::InitializeOneOff() if (s_initialized) return true; - g_display = GLContextHelper::getXDisplay(); - if (!g_display) { + g_display = new GLDisplayX11(); + if (!g_display->GetDisplay()) { LOG(ERROR) << "GLContextHelper::getXDisplay() failed."; return false; } @@ -102,7 +103,7 @@ bool GLSurfaceGLXQt::InitializeOneOff() return false; } - Display* display = static_cast<Display*>(g_display); + Display* display = static_cast<Display*>(g_display->GetDisplay()); int major, minor; if (!glXQueryVersion(display, &major, &minor)) { LOG(ERROR) << "glxQueryVersion failed."; @@ -124,7 +125,7 @@ bool GLSurfaceGLXQt::InitializeExtensionSettingsOneOff() if (!s_initialized) return false; - Display* display = static_cast<Display*>(g_display); + Display* display = static_cast<Display*>(g_display->GetDisplay()); GLSurfaceQt::g_extensions = glXQueryExtensionsString(display, 0); g_driver_glx.InitializeExtensionBindings(g_extensions.c_str()); return true; @@ -139,7 +140,7 @@ bool GLSurfaceGLXQt::Initialize(GLSurfaceFormat format) { Q_ASSERT(!m_surfaceBuffer); - Display* display = static_cast<Display*>(g_display); + Display* display = static_cast<Display*>(g_display->GetDisplay()); const int pbuffer_attributes[] = { GLX_PBUFFER_WIDTH, m_size.width(), GLX_PBUFFER_HEIGHT, m_size.height(), @@ -162,7 +163,7 @@ bool GLSurfaceGLXQt::Initialize(GLSurfaceFormat format) void GLSurfaceGLXQt::Destroy() { if (m_surfaceBuffer) { - glXDestroyPbuffer(static_cast<Display*>(g_display), m_surfaceBuffer); + glXDestroyPbuffer(static_cast<Display*>(g_display->GetDisplay()), m_surfaceBuffer); m_surfaceBuffer = 0; } } diff --git a/src/core/ozone/gl_surface_qt.cpp b/src/core/ozone/gl_surface_qt.cpp index 47bbffd95..e46b49475 100644 --- a/src/core/ozone/gl_surface_qt.cpp +++ b/src/core/ozone/gl_surface_qt.cpp @@ -27,7 +27,7 @@ namespace gl { -void *GLSurfaceQt::g_display = nullptr; +GLDisplay *GLSurfaceQt::g_display = nullptr; void *GLSurfaceQt::g_config = nullptr; std::string GLSurfaceQt::g_client_extensions; std::string GLSurfaceQt::g_extensions; @@ -76,7 +76,7 @@ GLSurfaceFormat GLSurfaceQt::GetFormat() return m_format; } -void* GLSurfaceQt::GetDisplay() +GLDisplay *GLSurfaceQt::GetGLDisplay() { return g_display; } @@ -88,7 +88,7 @@ void* GLSurfaceQt::GetConfig() #if BUILDFLAG(IS_WIN) namespace init { -bool InitializeGLOneOffPlatform() +bool InitializeGLOneOffPlatform(uint64_t system_device_id) { VSyncProviderWin::InitializeOneOff(); @@ -207,6 +207,11 @@ void DirectCompositionSurfaceWin::DisableDecodeSwapChain() void DirectCompositionSurfaceWin::DisableSoftwareOverlays() { } + +void DirectCompositionSurfaceWin::ShutdownOneOff() +{ +} + } // namespace gl #endif // BUILDFLAG(IS_WIN) #endif // !defined(Q_OS_MACOS) diff --git a/src/core/ozone/gl_surface_qt.h b/src/core/ozone/gl_surface_qt.h index c6ea79a94..f9d18a0ae 100644 --- a/src/core/ozone/gl_surface_qt.h +++ b/src/core/ozone/gl_surface_qt.h @@ -18,7 +18,7 @@ public: static bool HasEGLExtension(const char* name); // Implement GLSurface. - void *GetDisplay() override; + GLDisplay *GetGLDisplay() override; void *GetConfig() override; bool IsOffscreen() override; gfx::SwapResult SwapBuffers(PresentationCallback callback) override; @@ -34,7 +34,7 @@ protected: public: static void* g_config; - static void* g_display; + static GLDisplay *g_display; static std::string g_extensions; static std::string g_client_extensions; }; diff --git a/src/core/ozone/gl_surface_wgl_qt.cpp b/src/core/ozone/gl_surface_wgl_qt.cpp index 7598732c3..57493c14a 100644 --- a/src/core/ozone/gl_surface_wgl_qt.cpp +++ b/src/core/ozone/gl_surface_wgl_qt.cpp @@ -41,9 +41,9 @@ void *GLSurfaceWGLQt::GetHandle() return m_surfaceBuffer->GetHandle(); } -void *GLSurfaceWGLQt::GetDisplay() +GLDisplay *GLSurfaceWGLQt::GetGLDisplay() { - return m_surfaceBuffer->GetDisplay(); + return m_surfaceBuffer->GetGLDisplay(); } void *GLSurfaceWGLQt::GetConfig() diff --git a/src/core/ozone/gl_surface_wgl_qt.h b/src/core/ozone/gl_surface_wgl_qt.h index 60fc78499..e1a1253bb 100644 --- a/src/core/ozone/gl_surface_wgl_qt.h +++ b/src/core/ozone/gl_surface_wgl_qt.h @@ -21,7 +21,7 @@ public: bool Initialize(GLSurfaceFormat format) override; void Destroy() override; void *GetHandle() override; - void *GetDisplay() override; + GLDisplay *GetGLDisplay() override; void *GetConfig() override; protected: |