Details
-
Bug
-
Resolution: Done
-
Not Evaluated
-
5.8.0 Beta
-
None
-
Target platform is Imagination's MIPS Creator CI20 with PowerVR SGX540.
Codescape is used as GCC toolchain, (https://community.imgtec.com/developers/mips/tools/codescape-mips-sdk/)
Qt was configured with:
{noformat}
../qt5/configure -xplatform linux-mipsel-img-g++ -sysroot <path_to>/sysroot -opensource -confirm-license -nomake tests -nomake examples -prefix <path_to>/qt_install -qpa xcb
{noformat}
Configure summary related to OpenGL and QPA backends is:
{noformat}
OpenGL:
EGL .................................. yes
Desktop OpenGL ....................... no
OpenGL ES 2.0 ........................ yes
OpenGL ES 3.0 ........................ no
OpenGL ES 3.1 ........................ no
QPA backends:
DirectFB ............................... no
EGLFS .................................. yes
EGLFS details:
EGLFS i.Mx6 .......................... no
EGLFS i.Mx6 Wayland .................. no
EGLFS EGLDevice ...................... no
EGLFS GBM ............................ yes
EGLFS Mali ........................... no
EGLFS Rasberry Pi .................... no
EGL on X11 ........................... yes
LinuxFB ................................ yes
Mir client ............................. no
X11:
Using system provided XCB libraries .. yes
EGL on X11 ........................... yes
Xinput2 .............................. yes
XCB XKB .............................. yes
XLib ................................. yes
Xrender .............................. yes
XCB render ........................... yes
XCB GLX .............................. yes
XCB Xlib ............................. yes
Using system-provided xkbcommon ...... no
{noformat}
Target platform is Imagination's MIPS Creator CI20 with PowerVR SGX540. Codescape is used as GCC toolchain, ( https://community.imgtec.com/developers/mips/tools/codescape-mips-sdk/ ) Qt was configured with: {noformat} ../qt5/configure -xplatform linux-mipsel-img-g++ -sysroot <path_to>/sysroot -opensource -confirm-license -nomake tests -nomake examples -prefix <path_to>/qt_install -qpa xcb {noformat} Configure summary related to OpenGL and QPA backends is: {noformat} OpenGL: EGL .................................. yes Desktop OpenGL ....................... no OpenGL ES 2.0 ........................ yes OpenGL ES 3.0 ........................ no OpenGL ES 3.1 ........................ no QPA backends: DirectFB ............................... no EGLFS .................................. yes EGLFS details: EGLFS i.Mx6 .......................... no EGLFS i.Mx6 Wayland .................. no EGLFS EGLDevice ...................... no EGLFS GBM ............................ yes EGLFS Mali ........................... no EGLFS Rasberry Pi .................... no EGL on X11 ........................... yes LinuxFB ................................ yes Mir client ............................. no X11: Using system provided XCB libraries .. yes EGL on X11 ........................... yes Xinput2 .............................. yes XCB XKB .............................. yes XLib ................................. yes Xrender .............................. yes XCB render ........................... yes XCB GLX .............................. yes XCB Xlib ............................. yes Using system-provided xkbcommon ...... no {noformat}
Description
When running QuickNanoBrowser, GLSurfaceQtEGL::InitializeOneOff() fails with error: "GLContextHelper::getEGLDisplay() failed."
Call tree:
qtwebengine/src/core/gl_surface_qt.cpp: GLSurfaceQtEGL::InitializeOneOff()
calls
qtwebengine/src/core/gl_context_qt.cpp: void* GLContextHelper::getEGLDisplay() { return resourceForContext(QByteArrayLiteral("egldisplay")); }
which results in call to
qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglnativeintarfacehandler.cpp: QPlatformNativeInterface::NativeResourceForContextFunction QXcbEglNativeInterfaceHandler::nativeResourceFunctionForContext(const QByteArray &resource) const { switch (resourceType(resource)) { case EglContext: return eglContextForContext; case EglConfig: return eglConfigForContext; default: break; } return Q_NULLPTR; }
which does not handle "egldisplay" but only "eglcontext" and "eglconfig".
If in GLContextHelper::getEGLDisplay(), resourceForIntegration() is used instead of resourceForContext(), function called from xcb_egl is:
qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglnativeinterfacehandler.cpp: QPlatformNativeInterface::NativeResourceForIntegrationFunction QXcbEglNativeInterfaceHandler::nativeResourceFunctionForIntegration(const QByteArray &resource) const{ switch (resourceType(resource)) { case EglDisplay: return eglDisplay; default: break; } return Q_NULLPTR; }
which does handle "egldisplay", initialization is done successfully and QuickNanoBrowser runs.