I use this configurations;
export QT_LOGGING_RULES=qt.qpa.*=true
export QT_QPA_PLATFORM=eglfs
export QT_QPA_EGLFS_INTEGRATION=eglfs_kms
export LIBGL_ALWAYS_SOFTWARE=1
export MESA_LOADER_DRIVER_OVERRIDE=swrast
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
at the end I get segmentation fault, but modetest works . It sees the drm. and It displays test image.here is the output of the qt widget example
root@imx93-11x11-lpddr4x-evk:/usr/share/examples/widgets/widgets/analogclock/bin# ./analogclock
qt.qpa.plugin: init_platform called with pluginNamesWithArguments "eglfs" platformPluginPath "" platformThemeName ""
qt.qpa.plugin: Attempting to load Qt platform plugin "eglfs" with arguments QList()
qt.qpa.plugin: Successfully loaded Qt platform plugin "eglfs"
qt.qpa.theme: Adding platform integration's theme names to list of theme names: QList()
qt.qpa.theme: Failed to create platform theme; using "null" platform theme
qt.qpa.egldeviceintegration: EGL device integration plugin keys: QList("eglfs_emu", "eglfs_kms")
qt.qpa.egldeviceintegration: EGL device integration plugin keys (sorted): QList("eglfs_kms", "eglfs_emu")
qt.qpa.egldeviceintegration: Trying to load device EGL integration "eglfs_kms"
qt.qpa.eglfs.kms: New DRM/KMS via GBM integration created
qt.qpa.egldeviceintegration: Using EGL device integration "eglfs_kms"
qt.qpa.eglfs.kms: platformInit: Load Screen Config
qt.qpa.eglfs.kms: Loading KMS setup from "eglfs.kms.conf"
qt.qpa.eglfs.kms: Requested configuration (some settings may be ignored):
headless: false
hwcursor: false
pbuffers: true
separateScreens: true
virtualDesktopLayout: 0
outputs: QMap(("LVDS1", QMap(("mode", QVariant(QString, "300x200"))("name", QVariant(QString, "LVDS1")))))
qt.qpa.eglfs.kms: platformInit: Opening DRM device
qt.qpa.eglfs.kms: GBM: Using DRM device "/dev/dri/card0" specified in config file
qt.qpa.eglfs.kms: Using backend-provided DRM device /dev/dri/card0
qt.qpa.eglfs.kms: Creating GBM device for file descriptor 5 obtained from "/dev/dri/card0"
did not find extension DRI_IMAGE_DRIVER version 1
failed to bind extensions
qt.qpa.eglfs.kms: Using dedicated drm event reading thread
qt.qpa.eglfs.kms: Initializing event reader for device 0xaaaaf1c12490 fd 5
qt.qpa.eglfs.kms: Querying EGLDisplay
qt.qpa.eglfs.kms: Event reader thread: entering event loop
qt.qpa.eglfs.kms: Atomic reported as supported
qt.qpa.eglfs.kms: Atomic disabled
qt.qpa.eglfs.kms: Found 1 planes
qt.qpa.eglfs.kms: plane 0: id = 31 countFormats = 7 possibleCrtcs = 0x1 supported formats = XR24 AR24 RG16 XB24 AB24 AR15 XR15
qt.qpa.eglfs.kms: property 0: id = 8 name = 'type'
qt.qpa.eglfs.kms: type is ENUM, value is 1, possible values are:
qt.qpa.eglfs.kms: enum 0: Overlay - 0
qt.qpa.eglfs.kms: enum 1: Primary - 1
qt.qpa.eglfs.kms: enum 2: Cursor - 2
qt.qpa.eglfs.kms: property 1: id = 17 name = 'FB_ID'
qt.qpa.eglfs.kms: type is OBJECT
qt.qpa.eglfs.kms: property 2: id = 18 name = 'IN_FENCE_FD'
qt.qpa.eglfs.kms: type is SIGNED_RANGE, value is -1, possible values are:
qt.qpa.eglfs.kms: -1
qt.qpa.eglfs.kms: 2147483647
qt.qpa.eglfs.kms: property 3: id = 20 name = 'CRTC_ID'
qt.qpa.eglfs.kms: type is OBJECT
qt.qpa.eglfs.kms: property 4: id = 13 name = 'CRTC_X'
qt.qpa.eglfs.kms: type is SIGNED_RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: -2147483648
qt.qpa.eglfs.kms: 2147483647
qt.qpa.eglfs.kms: property 5: id = 14 name = 'CRTC_Y'
qt.qpa.eglfs.kms: type is SIGNED_RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: -2147483648
qt.qpa.eglfs.kms: 2147483647
qt.qpa.eglfs.kms: property 6: id = 15 name = 'CRTC_W'
qt.qpa.eglfs.kms: type is RANGE, value is 320, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 2147483647
qt.qpa.eglfs.kms: property 7: id = 16 name = 'CRTC_H'
qt.qpa.eglfs.kms: type is RANGE, value is 240, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 2147483647
qt.qpa.eglfs.kms: property 8: id = 9 name = 'SRC_X'
qt.qpa.eglfs.kms: type is RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 4294967295
qt.qpa.eglfs.kms: property 9: id = 10 name = 'SRC_Y'
qt.qpa.eglfs.kms: type is RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 4294967295
qt.qpa.eglfs.kms: property 10: id = 11 name = 'SRC_W'
qt.qpa.eglfs.kms: type is RANGE, value is 20971520, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 4294967295
qt.qpa.eglfs.kms: property 11: id = 12 name = 'SRC_H'
qt.qpa.eglfs.kms: type is RANGE, value is 15728640, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 4294967295
qt.qpa.eglfs.kms: property 12: id = 32 name = 'zpos'
qt.qpa.eglfs.kms: type is RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: "LVDS1" mode count: 1 crtc index: 0 crtc id: 33
qt.qpa.eglfs.kms: mode 0 320 x 240 @ 61 hz
qt.qpa.eglfs.kms: Selected mode 0 : 320 x 240 @ 61 hz for output "LVDS1"
qt.qpa.eglfs.kms: Physical size is QSizeF(60, 50) mm for output "LVDS1"
qt.qpa.eglfs.kms: Format is 34325258 requested_by_user = false for output "LVDS1"
qt.qpa.eglfs.kms: Output "LVDS1" framebuffer size is QSize(320, 240)
qt.qpa.eglfs.kms: property 0: id = 1 name = 'EDID'
qt.qpa.eglfs.kms: type is BLOB
qt.qpa.eglfs.kms: property 1: id = 2 name = 'DPMS'
qt.qpa.eglfs.kms: type is ENUM, value is 0, possible values are:
qt.qpa.eglfs.kms: enum 0: On - 0
qt.qpa.eglfs.kms: enum 1: Standby - 1
qt.qpa.eglfs.kms: enum 2: Suspend - 2
qt.qpa.eglfs.kms: enum 3: Off - 3
qt.qpa.eglfs.kms: property 2: id = 5 name = 'link-status'
qt.qpa.eglfs.kms: type is ENUM, value is 0, possible values are:
qt.qpa.eglfs.kms: enum 0: Good - 0
qt.qpa.eglfs.kms: enum 1: Bad - 1
qt.qpa.eglfs.kms: property 3: id = 6 name = 'non-desktop'
qt.qpa.eglfs.kms: type is RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 1
qt.qpa.eglfs.kms: property 4: id = 4 name = 'TILE'
qt.qpa.eglfs.kms: type is BLOB
qt.qpa.eglfs.kms: property 5: id = 20 name = 'CRTC_ID'
qt.qpa.eglfs.kms: type is OBJECT
qt.qpa.eglfs.kms: property 0: id = 22 name = 'ACTIVE'
qt.qpa.eglfs.kms: type is RANGE, value is 1, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 1
qt.qpa.eglfs.kms: property 1: id = 23 name = 'MODE_ID'
qt.qpa.eglfs.kms: type is BLOB
qt.qpa.eglfs.kms: property 2: id = 19 name = 'OUT_FENCE_PTR'
qt.qpa.eglfs.kms: type is RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 18446744073709551615
qt.qpa.eglfs.kms: property 3: id = 24 name = 'VRR_ENABLED'
qt.qpa.eglfs.kms: type is RANGE, value is 0, possible values are:
qt.qpa.eglfs.kms: 0
qt.qpa.eglfs.kms: 1
qt.qpa.eglfs.kms: Output LVDS1 can use 1 planes: 31
qt.qpa.eglfs.kms: Chose plane 31 for output LVDS1 (crtc id 33) (may not be applicable)
qt.qpa.eglfs.kms: Using plain OpenGL mouse cursor
qt.qpa.eglfs.kms: No EDID data for output "LVDS1"
qt.qpa.eglfs.kms: Sorted screen list: QList(OrderedScreen(QPlatformScreen=0xaaaaf1c6ac50 ("LVDS1") : 2147483647 / QPoint(0,0) / primary: false))
qt.qpa.eglfs.kms: Adding QPlatformScreen 0xaaaaf1c6ac50 ( "LVDS1" ) to QPA with geometry QRect(0,0 320x240) and isPrimary= false
qt.qpa.input: libinput: event1 - generic ft5x06 (ff): is tagged by udev as: Touchscreen
qt.qpa.input: libinput: event1 - generic ft5x06 (ff): device is a touch device
qt.qpa.input: libinput: event0 - 44440000.bbnsm:pwrkey: is tagged by udev as: Keyboard
qt.qpa.input: libinput: event0 - 44440000.bbnsm:pwrkey: device is a keyboard
qt.qpa.input: Using xkbcommon for key mapping
qt.qpa.input: libinput: registerDevice /dev/input/event1 - generic ft5x06 (ff)
qt.qpa.input.devices: register QInputDevice(QPointingDevice("generic ft5x06 (ff)" TouchScreen id=3393 ptrType=Finger caps=Position|Area maxPts=16)
qt.qpa.backingstore: Check for forced use of QRhi resulted in enable false with api Null
qt.qpa.eglfs.kms: Creating gbm_surface for screen LVDS1
qt.qpa.eglfs.kms: Got native format 34325258 from eglGetConfigAttrib() with return code true
Created context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 0, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 0, samples 0, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QColorSpace(), profile QSurfaceFormat::NoProfile) with config:
EGL_BUFFER_SIZE: 24
EGL_ALPHA_SIZE: 0
EGL_BLUE_SIZE: 8
EGL_GREEN_SIZE: 8
EGL_RED_SIZE: 8
EGL_DEPTH_SIZE: 0
EGL_STENCIL_SIZE: 0
EGL_CONFIG_CAVEAT: 12344
EGL_CONFIG_ID: 31
EGL_LEVEL: 0
EGL_MAX_PBUFFER_HEIGHT: 4096
EGL_MAX_PBUFFER_PIXELS: 0
EGL_MAX_PBUFFER_WIDTH: 4096
EGL_NATIVE_RENDERABLE: 1
EGL_NATIVE_VISUAL_ID: 875713112
EGL_NATIVE_VISUAL_TYPE: 12344
EGL_SAMPLES: 0
EGL_SAMPLE_BUFFERS: 0
EGL_SURFACE_TYPE: 4
EGL_TRANSPARENT_TYPE: 12344
EGL_TRANSPARENT_BLUE_VALUE: 0
EGL_TRANSPARENT_GREEN_VALUE: 0
EGL_TRANSPARENT_RED_VALUE: 0
EGL_BIND_TO_TEXTURE_RGB: 0
EGL_BIND_TO_TEXTURE_RGBA: 0
EGL_MIN_SWAP_INTERVAL: 1
EGL_MAX_SWAP_INTERVAL: 1
Running on a software rasterizer (LLVMpipe), expect limited performance.
qt.qpa.backingstore: Setting up RHI support in 0xaaaaf1ce5f90 for QWidgetWindow(0xaaaaf1d1e380, name="AnalogClockClassWindow") with QSurface::RasterSurface and requested API QPlatformBackingStoreRhiConfig::OpenGL
Created context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 0, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 0, samples 0, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QColorSpace(), profile QSurfaceFormat::NoProfile) with config:
EGL_BUFFER_SIZE: 24
EGL_ALPHA_SIZE: 0
EGL_BLUE_SIZE: 8
EGL_GREEN_SIZE: 8
EGL_RED_SIZE: 8
EGL_DEPTH_SIZE: 0
EGL_STENCIL_SIZE: 0
EGL_CONFIG_CAVEAT: 12344
EGL_CONFIG_ID: 31
EGL_LEVEL: 0
EGL_MAX_PBUFFER_HEIGHT: 4096
EGL_MAX_PBUFFER_PIXELS: 0
EGL_MAX_PBUFFER_WIDTH: 4096
EGL_NATIVE_RENDERABLE: 1
EGL_NATIVE_VISUAL_ID: 875713112
EGL_NATIVE_VISUAL_TYPE: 12344
EGL_SAMPLES: 0
EGL_SAMPLE_BUFFERS: 0
EGL_SURFACE_TYPE: 4
EGL_TRANSPARENT_TYPE: 12344
EGL_TRANSPARENT_BLUE_VALUE: 0
EGL_TRANSPARENT_GREEN_VALUE: 0
EGL_TRANSPARENT_RED_VALUE: 0
EGL_BIND_TO_TEXTURE_RGB: 0
EGL_BIND_TO_TEXTURE_RGBA: 0
EGL_MIN_SWAP_INTERVAL: 1
EGL_MAX_SWAP_INTERVAL: 1
Running on a software rasterizer (LLVMpipe), expect limited performance.
Created context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 0, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 0, samples 0, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QColorSpace(), profile QSurfaceFormat::NoProfile) with config:
EGL_BUFFER_SIZE: 24
EGL_ALPHA_SIZE: 0
EGL_BLUE_SIZE: 8
EGL_GREEN_SIZE: 8
EGL_RED_SIZE: 8
EGL_DEPTH_SIZE: 0
EGL_STENCIL_SIZE: 0
EGL_CONFIG_CAVEAT: 12344
EGL_CONFIG_ID: 31
EGL_LEVEL: 0
EGL_MAX_P[ 5803.971531] audit: type=1701 audit(1709060565.048:43): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=704 comm="analogclock" exe="/usr/share/examples/widgets/widgets/analogclock/bin/analogclock" sig=11 res=1
BUFFER_HEIGHT: 4096
EGL_MAX_PBUFFER_PIXELS: 0
EGL_MAX_PBUFFER_WIDTH: 4096
EGL_NATIVE_RENDERABLE: 1
EGL_NATIVE_VISUAL_ID: 875713112
EGL_NATIVE_VISUAL_TYPE: 12344
EGL_SAMPLES: 0
EGL_SAMPLE_BUFFERS: 0
EGL_SURFACE_TYPE: 4
EGL_TRANSPARENT_TYPE: 12344
EGL_TRANSPARENT_BLUE_VALUE: 0
EGL_TRANSPARENT_GREEN_VALUE: 0
EGL_TRANSPARENT_RED_VALUE: 0
EGL_BIND_TO_TEXTURE_RGB: 0
EGL_BIND_TO_TEXTURE_RGBA: 0
EGL_MIN_SWAP_INTERVAL: 1
EGL_MAX_SWAP_INTERVAL: 1
Running on a software rasterizer (LLVMpipe), expect limited performance.
Segmentation fault (core dumped)