QT 5.15 egl_kms Layering with kmssink [panfrost]
-
Hello,
I'm one of the Lead Devs from OpenHD (open source digital video transmission system). And I'm using QT 5.15 for quite a while now.
Normally our Software is used on Raspberry Pi or X86 devices.But I've ported it a while ago for Rockchip (Rk3588/RadxaRock5).
Since moving to Panfrost from LibMali I have issues with Qt.I managed to run kmssink and QT eglfs on two different planes, but with newer kernels and hw-acceleration I lost this ability.
Meaning I get "no permission" or DRM-flip errors which prevent me from layering our Video(kmssink) and our Overlay (QT).
Currently I'm testing all sort of enviroment variables but never got it working, is there anybody who could assist me ?
part of my debug log :
qt.qpa.eglfs.kms: Output HDMI1 can use 5 planes: 54 68 90 126 162 qt.qpa.eglfs.kms: Forcing plane index 2, plane id 90 (belongs to crtc id 0) qt.qpa.eglfs.kms: Chose plane 90 for output HDMI1 (crtc id 82) (may not be applicable) qt.qpa.eglfs.kms: EDID data for output "HDMI1": identifier '', manufacturer 'HDE', model 'HDTX-', serial '1', physical size: 510.00x290.00 qt.qpa.eglfs.kms: Creating new global GBM mouse cursor qt.qpa.eglfs.kms: Initializing cursor atlas from ":/cursor.json" qt.qpa.eglfs.kms: Sorted screen list: QVector(OrderedScreen(QPlatformScreen=0xaaab1b8f7600 ("HDMI1") : 2147483647 / QPoint(0,0) / primary: false)) qt.qpa.eglfs.kms: Adding QPlatformScreen 0xaaab1b8f7600 ( "HDMI1" ) to QPA with geometry QRect(0,0 1280x720) and isPrimary= false
But kmssink now doesn't get permission to display on the plane 68 or 54 higher planes also don't work
I'm also quite puzzled about this "qt.qpa.eglfs.kms: Chose plane 90 for output HDMI1 (crtc id 82) (may not be applicable)" .. this means QT doesn't know if it uses this plane ?
-
Hello,
I'm one of the Lead Devs from OpenHD (open source digital video transmission system). And I'm using QT 5.15 for quite a while now.
Normally our Software is used on Raspberry Pi or X86 devices.But I've ported it a while ago for Rockchip (Rk3588/RadxaRock5).
Since moving to Panfrost from LibMali I have issues with Qt.I managed to run kmssink and QT eglfs on two different planes, but with newer kernels and hw-acceleration I lost this ability.
Meaning I get "no permission" or DRM-flip errors which prevent me from layering our Video(kmssink) and our Overlay (QT).
Currently I'm testing all sort of enviroment variables but never got it working, is there anybody who could assist me ?
part of my debug log :
qt.qpa.eglfs.kms: Output HDMI1 can use 5 planes: 54 68 90 126 162 qt.qpa.eglfs.kms: Forcing plane index 2, plane id 90 (belongs to crtc id 0) qt.qpa.eglfs.kms: Chose plane 90 for output HDMI1 (crtc id 82) (may not be applicable) qt.qpa.eglfs.kms: EDID data for output "HDMI1": identifier '', manufacturer 'HDE', model 'HDTX-', serial '1', physical size: 510.00x290.00 qt.qpa.eglfs.kms: Creating new global GBM mouse cursor qt.qpa.eglfs.kms: Initializing cursor atlas from ":/cursor.json" qt.qpa.eglfs.kms: Sorted screen list: QVector(OrderedScreen(QPlatformScreen=0xaaab1b8f7600 ("HDMI1") : 2147483647 / QPoint(0,0) / primary: false)) qt.qpa.eglfs.kms: Adding QPlatformScreen 0xaaab1b8f7600 ( "HDMI1" ) to QPA with geometry QRect(0,0 1280x720) and isPrimary= false
But kmssink now doesn't get permission to display on the plane 68 or 54 higher planes also don't work
I'm also quite puzzled about this "qt.qpa.eglfs.kms: Chose plane 90 for output HDMI1 (crtc id 82) (may not be applicable)" .. this means QT doesn't know if it uses this plane ?
as a little addition to this post this is my service starting my QT app
[Unit] Description=QOpenHD After=multi-user.target [Service] Type=simple Environment="QT_QPA_EGLFS_KMS_ATOMIC=1" Environment="QT_QPA_EGLFS_DEBUG=1" Environment="QT_QPA_EGLFS_KMS_PLANE_INDEX=2" Environment="QT_QPA_EGLFS_FORCE888=1" Environment="QT_QPA_EGLFS_KMS_CONFIG=/usr/local/share/qopenhd/rock_qt_eglfs_kms_config.json" ExecStart=/usr/local/bin/QOpenHD -platform eglfs User=root Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
-
as a little addition to this post this is my service starting my QT app
[Unit] Description=QOpenHD After=multi-user.target [Service] Type=simple Environment="QT_QPA_EGLFS_KMS_ATOMIC=1" Environment="QT_QPA_EGLFS_DEBUG=1" Environment="QT_QPA_EGLFS_KMS_PLANE_INDEX=2" Environment="QT_QPA_EGLFS_FORCE888=1" Environment="QT_QPA_EGLFS_KMS_CONFIG=/usr/local/share/qopenhd/rock_qt_eglfs_kms_config.json" ExecStart=/usr/local/bin/QOpenHD -platform eglfs User=root Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
@raphael_openhd Thanks to the opensource QOpenHD, I use the same hardware(rk3588) , I can lunch the gstreamer with kmssink, and QOpenHD with eglfs_kms. But the Overlay(Qt) cannot display as transparent (have black background). So we can only display the Overlay or Video separate.
So does the Qt eglfs_kms support background transparent?