Skip to content
  • Laszlo Agocs's avatar
    Pluginize the eglfs hooks · b7f0583f
    Laszlo Agocs authored
    
    
    Following the principle of device integrations in QtWayland and soon
    xcb, a plugin interface is being introduced to gradually replace the
    statically compiled-in hooks.
    
    The interface is same as before for the time being, for compatibility
    with the existing device-specific hooks.
    
    QEglFSHooks is now just a dummy subclass for QEGLDeviceIntegration to
    support the legacy, compiled-in, device-specific hooks. When -device
    is not used with configure and so there is no hook active, the new
    plugin-based approach kicks in.
    
    The environment variable QT_QPA_EGLFS_INTEGRATION can be set to
    indicate the preferred integration name (e.g. eglfs_x11, eglfs_kms).
    
    It can also be set to "none", indicating that no plugins should be
    considered and the default, non-specialized integration is to be used.
    (this is for devices, like Beagleboard|bone, that do not need any special
    code to set up EGL)
    
    Device makespecs can set EGLFS_DEVICE_INTEGRATION. The value is then used
    as the default, preferred plugin name when QT_QPA_EGLFS_INTEGRATION is not
    set. In the future device makespecs are expected to set a plugin name instead
    of relying on the traditional EGLFS_PLATFORM_HOOKS_*.
    
    When neither the QT_QPA_EGLFS_INTEGRATION nor EGLFS_DEVICE_INTEGRATION are
    set, all plugins will be tried in an unspecified order. The first one that
    succeeds to load is used. If all fails or there are no plugins, the built-in,
    non-specialized integration is used.
    
    To debug what integration is being used, enable the logging category
    qt.qpa.egldeviceintegration.
    
    There is some built-in logic for desktop/Mesa based systems: Under X,
    eglfs_x11 is preferred, otherwise eglfs_kms is prioritized. This, assuming
    sufficient permissions to video and input devices, allows simply launching
    apps with -platform eglfs. No more editing of eglfs.pri.
    
    [ChangeLog][QtGui] Added support for device-specific backend plugins in eglfs.
    
    Change-Id: Ia2ddcddac014c25817171dc140cd8cf913784ac6
    Reviewed-by: default avatarLouai Al-Khanji <louai.al-khanji@theqtcompany.com>
    b7f0583f