diff options
Diffstat (limited to 'src/core/ozone/gl_surface_glx_qt.cpp')
-rw-r--r-- | src/core/ozone/gl_surface_glx_qt.cpp | 69 |
1 files changed, 19 insertions, 50 deletions
diff --git a/src/core/ozone/gl_surface_glx_qt.cpp b/src/core/ozone/gl_surface_glx_qt.cpp index 757662211..61c9ef9de 100644 --- a/src/core/ozone/gl_surface_glx_qt.cpp +++ b/src/core/ozone/gl_surface_glx_qt.cpp @@ -7,13 +7,18 @@ #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_display_manager.h" +#include "ui/gl/gl_surface.h" #include "ui/gl/gl_surface_glx.h" namespace gl { -void GLSurfaceGLX::ShutdownOneOff() +static bool HasGLXExtension(const char *name) { + return GLSurface::ExtensionsContain(GLSurfaceQt::g_extensions.c_str(), name); } bool GLSurfaceGLX::IsCreateContextSupported() @@ -26,16 +31,6 @@ bool GLSurfaceGLX::IsCreateContextRobustnessSupported() return GLContextHelper::isCreateContextRobustnessSupported() && HasGLXExtension("GLX_ARB_create_context_robustness"); } -bool GLSurfaceGLX::IsEXTSwapControlSupported() -{ - return HasGLXExtension("GLX_EXT_swap_control"); -} - -bool GLSurfaceGLX::IsMESASwapControlSupported() -{ - return HasGLXExtension("GLX_MESA_swap_control"); -} - bool GLSurfaceGLX::IsCreateContextProfileSupported() { return false; // ExtensionsContain(g_extensions, "GLX_ARB_create_context_profile"); @@ -46,31 +41,11 @@ bool GLSurfaceGLX::IsCreateContextES2ProfileSupported() return HasGLXExtension("GLX_ARB_create_context_es2_profile"); } -bool GLSurfaceGLX::IsOMLSyncControlSupported() -{ - return false; // ExtensionsContain(g_extensions, "GLX_OML_sync_control"); -} - -bool GLSurfaceGLX::HasGLXExtension(const char *name) -{ - return ExtensionsContain(GLSurfaceQt::g_extensions.c_str(), name); -} - -bool GLSurfaceGLX::IsTextureFromPixmapSupported() -{ - return HasGLXExtension("GLX_EXT_texture_from_pixmap"); -} - bool GLSurfaceGLX::IsRobustnessVideoMemoryPurgeSupported() { return false; } -const char* GLSurfaceGLX::GetGLXExtensions() -{ - return GLSurfaceQt::g_extensions.c_str(); -} - bool GLSurfaceGLXQt::s_initialized = false; @@ -85,61 +60,55 @@ GLSurfaceGLXQt::~GLSurfaceGLXQt() Destroy(); } -bool GLSurfaceGLXQt::InitializeOneOff() +GLDisplay *GLSurfaceGLXQt::InitializeOneOff(gl::GpuPreference preference) { if (s_initialized) - return true; + return g_display; - g_display = GLContextHelper::getXDisplay(); - if (!g_display) { + g_display = GLDisplayManagerX11::GetInstance()->GetDisplay(preference); + if (!g_display->GetDisplay()) { LOG(ERROR) << "GLContextHelper::getXDisplay() failed."; - return false; + return nullptr; } g_config = GLContextHelper::getGlXConfig(); if (!g_config) { LOG(ERROR) << "GLContextHelper::getGlxConfig() failed."; - return false; + return nullptr; } - 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."; - return false; + return nullptr; } if (major == 1 && minor < 3) { LOG(ERROR) << "GLX 1.3 or later is required."; - return false; + return nullptr; } s_initialized = true; - return true; + return g_display; } - 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; } -bool GLSurfaceGLX::InitializeExtensionSettingsOneOff() -{ - return GLSurfaceGLXQt::InitializeExtensionSettingsOneOff(); -} - 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 +131,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; } } |