Hello everyone,
I am building a custom Yocto image for an i.MX93 EVK. My goal is a minimal, EGLFS-only system with Qt6, using software rendering since the i.MX93 does not have a 3D GPU.
The resulting image is highly unstable. Basic graphics applications like kmscube and the Qt OpenGL examples consistently cause a Segmentation Fault, which has even led to a kernel panic (Attempted to kill init!).
I have performed multiple clean builds and flashed to different SD cards, but the instability persists. I'm looking for advice on what might be wrong in my configuration or what to try next.
# Pure OpenGL ES without Wayland support
include conf/distro/include/fsl-imx-base.inc
include conf/distro/include/fsl-imx-preferred-env.inc
DISTRO = "nexcall-qt6-gles"
DISTRO_NAME = "Qt6 OpenGL ES Distribution"
DISTRO_VERSION = "1.0"
# Remove ALL windowing systems including Wayland
DISTRO_FEATURES:remove = "directfb wayland x11 xwayland"
# Enable OpenGL ES support only
DISTRO_FEATURES:append = " gles2 opengl"
# Remove conflicting graphics features
DISTRO_FEATURES:remove = "vulkan"
# Auto-install Qt6 packages in core-image-minimal and other core images
CORE_IMAGE_EXTRA_INSTALL += " \
qtbase \
qtbase-plugins \
qtbase-examples \
qtdeclarative \
qtdeclarative-qmlplugins \
qtdeclarative-examples \
qtmultimedia \
qtmultimedia-examples \
qtquick3d \
qtquick3d-examples \
mesa-megadriver \
kmscube \
libdrm-tests \
glibc-utils \
glibc-gconv \
"
# Qt6 specific configurations for pure OpenGL ES
PACKAGECONFIG:append:pn-qtbase = " gles2 eglfs examples kms gbm"
PACKAGECONFIG:remove:pn-qtbase = "no-opengl linuxfb xcb wayland directfb gl vulkan"
# Enable examples for Qt6 modules
PACKAGECONFIG:append:pn-qtdeclarative = " examples"
PACKAGECONFIG:append:pn-qtmultimedia = " examples"
PACKAGECONFIG:append:pn-qtwebchannel = " examples"
PACKAGECONFIG:append:pn-qtcoap = " examples"
PACKAGECONFIG:append:pn-qtgrpc = " examples"
PACKAGECONFIG:append:pn-qtmqtt = " examples"
PACKAGECONFIG:append:pn-qtvncserver = " examples"
PACKAGECONFIG:append:pn-qtquick3d = " examples"
# Set default QPA platform to eglfs for direct framebuffer rendering
QT_QPA_DEFAULT_PLATFORM = "eglfs"
# Use Mesa for EGL and OpenGL ES on IMX93
PREFERRED_PROVIDER_virtual/egl = "mesa"
PREFERRED_PROVIDER_virtual/libgles2 = "mesa"
PREFERRED_PROVIDER_virtual/libgl = "mesa"
# Enable Mesa Gallium + kmsro for non-X11 (DRM/GBM) rendering
PACKAGECONFIG:append:pn-mesa = " gallium gbm egl"
# Build only the Gallium software drivers we need on i.MX93 (no 3D GPU)
GALLIUMDRIVERS = "swrast,kmsro"
# Completely remove Wayland compositor and related packages
PACKAGECONFIG:remove:pn-weston = "rdp"
PACKAGECONFIG:remove:pn-weston-init = "rdp"
IMAGE_INSTALL:remove = "weston weston-init wayland"
# Optimize for embedded use
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
IMAGE_LINGUAS = "en-us"
GLIBC_GENERATE_LOCALES = "en_US.UTF-8"
Symptoms
Connectors:
id encoder status name size (mm) modes encoders
35 34 connected LVDS-1 70x52 1 34
Given that the system is unstable even after a clean build and flash, what could I be missing?
Is there a required PACKAGECONFIG or kernel configuration for Mesa/GBM on i.MX93 that I have overlooked for software rendering?
Any advice would be greatly appreciated. Thank you
and I dont use 3d, I use basic qt.
pls refer to the patch as below
Qt applications on 93 are showing graphics problems. This is traced
back to EGL support being missing from 93, which is a side effect of
removing 3D support for 93.
this patch is for
Enable kms so EGL support is restored for 93. Also enable related gbm.
meta-sdk/dynamic-layers/qt6-layer/recipes-qt/qt6/qtbase_%.bbappend
-qt/qt6/qtbase_%.bbappendPACKAGECONFIG_GRAPHICS:imxpxp = ""
+ PACKAGECONFIG_GRAPHICS:imxpxp = "${PACKAGECONFIG_GRAPHICS_IMX_DRM}"
+ PACKAGECONFIG_GRAPHICS_IMX_DRM = ""
+ PACKAGECONFIG_GRAPHICS_IMX_DRM:imxdrm = "gbm kms"
Thank you for your reply, but also I dont want to build imx-full-image it is too much .how can I add qt6 support to the minimal image ? I want want to use any xwayland,wayland, x11, directfb, linuxfb, opengl, opengl-es. Just eglfs with drm backend for the qt6.
sorry for my late response, local team is on holiday now, I'm limited to access the mail, you can refer to the link as below
I didn't find such usage internally, and checked your settings, you use kmsro via mesa, I didn't test this on imx93, since you said this has stable issue, so I suggest that you can use kms_swrast, and enalbe llvm, run the mesa via llvmpipe, not softpipe
kms_swrast: A hardware-backed graphics driver
LLVMpipe — The Mesa 3D Graphics Library latest documentation
my local.conf also
MACHINE ??= 'imx93-11x11-lpddr4x-evk'
DISTRO ?= 'fsl-imx-fb'
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
HALT,${TMPDIR},100M,1K \
HALT,${DL_DIR},100M,1K \
HALT,${SSTATE_DIR},100M,1K \
HALT,/tmp,10M,1K"
PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
CONF_VERSION = "2"
DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"
# Switch to Debian packaging and include package-management in the image
PACKAGE_CLASSES = "package_deb"
EXTRA_IMAGE_FEATURES += "package-management"
PACKAGECONFIG:append:pn-qtbase = " eglfs kms gles2"
PACKAGECONFIG:append:pn-mesa = " gallium-llvm gbm egl"
GALLIUMDRIVERS = "llvmpipe"
# Qt6 with EGLFS support for core-image-minimal
CORE_IMAGE_EXTRA_INSTALL += " \
qtbase \
qtbase-plugins \
qtbase-examples \
qtdeclarative \
qtdeclarative-qmlplugins \
qtserialport \
fontconfig \
imx-pxp-g2d \
libdrm \
libgbm \
evtest \
mesa \
mesa-megadriver \
"
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
for "Failed to move cursor on screen LVDS1", it seems that KMS driver doesn't support t Cursor plane, but you can still use it, maybe you can refer to this to add the cursor, this should be related to the QT, not imx93
for panel display issue, maybe you need check the timings, if you use simple panel driver, also need set correct timing there, for the error message, since you use software without default backend, you need check if you install Mesa’s software drivers totally fine, which is not the default usage on imx93, for SW debugging, need customer check by themselves, we don't have any official patch or testing document
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)