diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2023-04-24 09:47:09 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2023-07-06 11:40:08 +0200 |
commit | 09ab9ab74efcd0da0a310c992629bc650a5a80ec (patch) | |
tree | 2c7e5ceb7780802cfa86ae32ba74a95e84db0649 /src | |
parent | 00783b4f988c97ac1af59981d168704629f92610 (diff) |
Make compatible with Chromium EGL
Pick-to: 6.6
Change-Id: I3ee4d2f9940966f5a050cce3d9d6d3d415a13901
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/ozone/gl_ozone_egl_qt.cpp | 27 | ||||
-rw-r--r-- | src/core/ozone/gl_surface_egl_qt.cpp | 79 |
2 files changed, 7 insertions, 99 deletions
diff --git a/src/core/ozone/gl_ozone_egl_qt.cpp b/src/core/ozone/gl_ozone_egl_qt.cpp index 5e2540af8..287f07713 100644 --- a/src/core/ozone/gl_ozone_egl_qt.cpp +++ b/src/core/ozone/gl_ozone_egl_qt.cpp @@ -25,35 +25,22 @@ namespace ui { -bool GLOzoneEGLQt::LoadGLES2Bindings(const gl::GLImplementationParts & /*implementation*/) +bool LoadQtEGLBindings() { - base::NativeLibrary eglgles2Library = dlopen(NULL, RTLD_LAZY); - if (!eglgles2Library) { - LOG(ERROR) << "Failed to open EGL/GLES2 context " << dlerror(); - return false; - } - - gl::GLGetProcAddressProc get_proc_address = - reinterpret_cast<gl::GLGetProcAddressProc>( - base::GetFunctionPointerFromNativeLibrary(eglgles2Library, - "eglGetProcAddress")); - if (!get_proc_address) { - // QTBUG-63341 most likely libgles2 not linked with libegl -> fallback to qpa - get_proc_address = - reinterpret_cast<gl::GLGetProcAddressProc>(GLContextHelper::getEglGetProcAddress()); - } - + gl::GLGetProcAddressProc get_proc_address = reinterpret_cast<gl::GLGetProcAddressProc>(GLContextHelper::getEglGetProcAddress()); if (!get_proc_address) { LOG(ERROR) << "eglGetProcAddress not found."; - base::UnloadNativeLibrary(eglgles2Library); return false; } - gl::SetGLGetProcAddressProc(get_proc_address); - gl::AddGLNativeLibrary(eglgles2Library); return true; } +bool GLOzoneEGLQt::LoadGLES2Bindings(const gl::GLImplementationParts & /*implementation*/) +{ + return LoadQtEGLBindings(); +} + gl::GLDisplay *GLOzoneEGLQt::InitializeGLOneOffPlatform(uint64_t system_device_id) { if (auto display = gl::GLSurfaceEGLQt::InitializeOneOff(system_device_id)) { diff --git a/src/core/ozone/gl_surface_egl_qt.cpp b/src/core/ozone/gl_surface_egl_qt.cpp index b83f8f506..63694d59d 100644 --- a/src/core/ozone/gl_surface_egl_qt.cpp +++ b/src/core/ozone/gl_surface_egl_qt.cpp @@ -21,75 +21,6 @@ using ui::GetLastEGLErrorString; namespace gl { -bool GLDisplayEGL::InitializeExtensionSettings() -{ - if (display_ == EGL_NO_DISPLAY) - return false; - ext->UpdateConditionalExtensionSettings(display_); - return true; -} - -GLDisplayEGL *GLDisplayEGL::GetDisplayForCurrentContext() -{ - GLContext *context = GLContext::GetCurrent(); - return context ? context->GetGLDisplayEGL() : nullptr; -} - -bool GLDisplayEGL::IsEGLSurfacelessContextSupported() -{ - return GLSurfaceEGLQt::g_egl_surfaceless_context_supported; -} - -bool GLDisplayEGL::IsEGLContextPrioritySupported() -{ - return false; -} - -bool GLDisplayEGL::Initialize(gl::EGLDisplayPlatform native_display) -{ - auto glDisplay = GLSurfaceEGLQt::InitializeOneOff(0); - - if (glDisplay) { - display_ = glDisplay->GetDisplay(); - native_display_ = native_display; - std::string platform_extensions(ext->GetPlatformExtensions(display_)); - gfx::ExtensionSet extensions(gfx::MakeExtensionSet(platform_extensions)); - ext->b_EGL_EXT_image_dma_buf_import = - gfx::HasExtension(extensions, "EGL_EXT_image_dma_buf_import"); - ext->b_EGL_EXT_image_dma_buf_import_modifiers = - gfx::HasExtension(extensions, "EGL_EXT_image_dma_buf_import_modifiers"); -// ext->InitializeExtensionSettings(display_); Not functional for us at this moment - } - - return glDisplay; -} - -bool GLDisplayEGL::IsAndroidNativeFenceSyncSupported() -{ - return false; -} - -// static -GLDisplayEGL *GLSurfaceEGL::GetGLDisplayEGL() -{ - return GLDisplayManagerEGL::GetInstance()->GetDisplay(GpuPreference::kDefault); -} - -DisplayType GLDisplayEGL::GetDisplayType() const -{ - return DisplayType::DEFAULT; -} - -EGLDisplayPlatform GLDisplayEGL::GetNativeDisplay() const -{ - return native_display_; -} - -GLSurface *GLSurfaceEGL::createSurfaceless(gl::GLDisplayEGL *display, const gfx::Size& size) -{ - return new GLSurfacelessQtEGL(display, size); -} - bool GLSurfaceEGLQt::g_egl_surfaceless_context_supported = false; bool GLSurfaceEGLQt::s_initialized = false; @@ -265,15 +196,5 @@ void* GLSurfacelessQtEGL::GetShareHandle() return NULL; } -std::string DisplayExtensionsEGL::GetPlatformExtensions(EGLDisplay) -{ - EGLDisplay display = GLContextHelper::getEGLDisplay(); - if (display == EGL_NO_DISPLAY) - return ""; - - const char* str = eglQueryString(display, EGL_EXTENSIONS); - return str ? std::string(str) : ""; -} - } // namespace gl #endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_WIN) |