Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. QT 5.15 egl_kms Layering with kmssink [panfrost]
Forum Updated to NodeBB v4.3 + New Features

QT 5.15 egl_kms Layering with kmssink [panfrost]

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
3 Posts 2 Posters 776 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    raphael_openhd
    wrote on last edited by raphael_openhd
    #1

    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 ?

    R 1 Reply Last reply
    0
    • R raphael_openhd

      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 ?

      R Offline
      R Offline
      raphael_openhd
      wrote on last edited by raphael_openhd
      #2

      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
      
      T 1 Reply Last reply
      0
      • R raphael_openhd

        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
        
        T Offline
        T Offline
        tbago
        wrote on last edited by
        #3

        @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?

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved