缺少libOpenVG导致无法调用GPU进行加速

我在RDK X5中想要运行Qt+QML程序,并想让QT能够使用到RDK X5中的GPU来对程序进行加速

  1. 使用export QSG_INFO=1查看当前QT并没有启用GPU加速

    root@ubuntu:/app/test_qt# export QSG_INFO=1
    root@ubuntu:/app/test_qt# python3 main.py 
    qt.scenegraph.general: threaded render loop
    qt.scenegraph.general: Using sg animation driver
    qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
    qt.scenegraph.general: Using sg animation driver
    qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
    qt.scenegraph.general: Creating QRhi with backend OpenGL for window 0xaaaaecc95110 (wflags 0x1)
      Graphics API debug/validation layers: 0
      Debug markers: 0
      Timestamps: 0
      Prefer software device: 0
      Shader/pipeline cache collection: 1
    qt.rhi.general: Created OpenGL context QSurfaceFormat(version 4.5, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
    qt.rhi.general: OpenGL VENDOR: Mesa RENDERER: llvmpipe (LLVM 15.0.7, 128 bits) VERSION: 4.5 (Compatibility Profile) Mesa 23.2.1-1ubuntu3.1~22.04.3
    qt.scenegraph.general: Created QRhi 0xffff2c0056d0 for window 0xaaaaecc95110
    qt.scenegraph.general: Attempting to seed pipeline cache for QRhi 0xffff2c0056d0 from '/root/.cache/main.py/qtpipelinecache-arm64-little_endian-lp64/qqpc_opengl'
    qt.rhi.general: Seeded pipeline cache with 1 program binaries
    qt.scenegraph.general: MSAA sample count for the swapchain is 1. Alpha channel requested = no.
    qt.scenegraph.general: rhi texture atlas dimensions: 1024x512
    qt.scenegraph.general: animation driver switched to timer mode
    qt.scenegraph.general: animation driver switched to timer mode
    从日志中可以看到`qt.rhi.general: OpenGL VENDOR: Mesa RENDERER: llvmpipe (LLVM 15.0.7, 128 bits)`-
    

    VENDOR: Mesa —— Mesa 是 Linux 下开源的软件 OpenGL 实现。-
    RENDERER: llvmpipe —— llvmpipe 是一个纯CPU(Software Rasterizer)渲染器。

  2. 使用es2_info命令查看GPU状态出现报错

    root@ubuntu:~# es2_info
    Error: eglGetDisplay() failed
    
  3. 使用命令 find /usr/ -name "libEGL*" -o -name "libGAL*" -o -name "libGLESv2*" 查看本地GPU库是否完整

    root@ubuntu:~# find /usr/ -name "libEGL*" -o -name "libGAL*" -o -name "libGLESv2*"
    /usr/lib/aarch64-linux-gnu/mesa_backup/libEGL_mesa.so.0
    /usr/lib/aarch64-linux-gnu/mesa_backup/libEGL.so.1
    /usr/lib/aarch64-linux-gnu/mesa_backup/libGLESv2.so.2
    /usr/lib/aarch64-linux-gnu/mesa_backup/libEGL_mesa.so.0.0.0
    /usr/lib/aarch64-linux-gnu/mesa_backup/libEGL.so.1.1.0
    /usr/lib/aarch64-linux-gnu/mesa_backup/libGLESv2.so
    /usr/lib/aarch64-linux-gnu/mesa_backup/libEGL.so
    /usr/lib/aarch64-linux-gnu/mesa_backup/libGLESv2.so.2.1.0
    /usr/hobot/lib/libEGL.so.1
    /usr/hobot/lib/libGLESv2.so.2
    /usr/hobot/lib/libGLESv2.so
    /usr/hobot/lib/libEGL.so
    /usr/hobot/lib/libGAL.so
    /usr/hobot/lib/libEGL.so.1.5.0
    /usr/hobot/lib/libGLESv2.so.2.0.0
    发现`/usr/hobot/`中存在GPU专用库,编写一个脚本来测试
    
    #!/bin/bash
    
    # 程序路径
    APP_PATH="$(dirname "$(readlink -f "$0")")"
    APP_NAME="main.py"
    
    # Vivante GPU 库路径
    VIVANTE_LIB_PATH="/usr/hobot/lib"
    
    # 备份 Mesa 库目录路径
    BACKUP_PATH="/usr/lib/aarch64-linux-gnu/mesa_backup"
    
    # 创建备份目录(仅第一次运行时执行)
    if [ ! -d "$BACKUP_PATH" ]; then
        echo ">> 备份原有 Mesa OpenGL 库..."
        sudo mkdir -p "$BACKUP_PATH"
        sudo mv /usr/lib/aarch64-linux-gnu/libEGL* "$BACKUP_PATH"/
        sudo mv /usr/lib/aarch64-linux-gnu/libGLESv2* "$BACKUP_PATH"/
        echo ">> 备份完成:$BACKUP_PATH"
    else
        echo ">> 备份目录已存在,跳过备份。"
    fi
    
    # 导出环境变量使用 Vivante 库
    echo ">> 设置环境变量使用 Vivante GPU 库..."
    export LD_LIBRARY_PATH=$VIVANTE_LIB_PATH:$LD_LIBRARY_PATH
    export LIBGL_DRIVERS_PATH=$VIVANTE_LIB_PATH
    export QT_QPA_PLATFORM=eglfs
    export QT_QPA_EGLFS_INTEGRATION=eglfs_viv
    export QT_DEBUG_PLUGINS=1
    export QSG_INFO=1
    
    # 检查 galcore 模块状态
    echo ">> 检查 galcore 模块..."
    lsmod | grep galcore || {
        echo ">> galcore 未加载,尝试加载..."
        sudo insmod /lib/modules/$(uname -r)/kernel/drivers/misc/verisilicon/gc8000l/galcore.ko || {
            echo "!! 加载 galcore 失败,请检查模块路径。"
            exit 1
        }
    }
    
    # 验证 OpenGL ES 信息
    echo ">> 运行 es2_info 进行 EGL 检查..."
    es2_info || {
        echo "!! es2_info 运行失败,请确认 Vivante 库路径正确。"
        exit 1
    }
    
    # 运行 QML 程序
    echo ">> 运行 QML 测试程序..."
    python3 "$APP_PATH/$APP_NAME"
    运行脚本,任然出现相同错误
    
    root@ubuntu:/app/test_qt# ./run_with_gpu.sh 
    >> 备份目录已存在,跳过备份。
    >> 设置环境变量使用 Vivante GPU 库...
    >> 检查 galcore 模块...
    galcore               368640  0
    >> 运行 es2_info 进行 EGL 检查...
    Error: eglGetDisplay() failed
    !! es2_info 运行失败,请确认 Vivante 库路径正确。
    
  4. 使用strace -e openat,ioctl,read,write es2_info命令来追踪错误

    root@ubuntu:/app/test_qt# strace -e openat,ioctl,read,write es2_info
    openat(AT_FDCWD, "/usr/hobot/lib/tls/aarch64/atomics/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/tls/aarch64/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/tls/atomics/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/tls/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/aarch64/atomics/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/aarch64/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/atomics/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/libGLESv2.so.2", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libEGL.so.1", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/app/pub/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/middleware/pub/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/system/usr/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libX11.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\340u\2\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libGAL.so", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libVSC.so", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\320\310\6\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libXau.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libbsd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libbsd.so.0", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libmd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libmd.so.0", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
    read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 526
    read(3, "", 4096)                       = 0
    openat(AT_FDCWD, "/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
    read(3, "# The \"order\" line is only used "..., 4096) = 92
    read(3, "", 4096)                       = 0
    openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
    read(3, "# This is /run/systemd/resolve/s"..., 4096) = 920
    read(3, "", 4096)                       = 0
    openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
    read(3, "127.0.0.1\tlocalhost\n::1\t\tlocalho"..., 4096) = 127
    read(3, "", 4096)                       = 0
    openat(AT_FDCWD, "/etc/gai.conf", O_RDONLY|O_CLOEXEC) = 3
    read(3, "# Configuration for getaddrinfo("..., 4096) = 2584
    read(3, "", 4096)                       = 0
    openat(AT_FDCWD, "/root/.Xauthority", O_RDONLY) = 4
    read(4, "\1\0\0\6ubuntu\0\00210\0\22MIT-MAGIC-COOKIE"..., 4096) = 52
    read(4, "", 4096)                       = 0
    openat(AT_FDCWD, "/usr/hobot/lib/libEGL.so", O_RDONLY|O_CLOEXEC) = 4
    read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libGLESv1_CM.so", O_RDONLY|O_CLOEXEC) = 4
    read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libGLESv2.so", O_RDONLY|O_CLOEXEC) = 4
    read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libGL.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libGL.so", O_RDONLY|O_CLOEXEC) = 4
    read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\240*\4\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = 4
    read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\320\0\4\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libGLX.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libGLX.so.0", O_RDONLY|O_CLOEXEC) = 4
    read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0 ,\0\0\0\0\0\0"..., 832) = 832
    openat(AT_FDCWD, "/usr/hobot/lib/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/hobot/lib/sensor/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/tls/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/tls/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/tls/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/tls/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/tls/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/tls/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/tls/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/tls/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/tls/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/tls/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/tls/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/tls/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/aarch64/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/atomics/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/usr/lib/libOpenVG.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    write(1, "Error: eglGetDisplay() failed\n", 30Error: eglGetDisplay() failed
    ) = 30
    +++ exited with 255 +++
    在整个系统中搜索"libOpenVG"库
    
    root@ubuntu:/app/test_qt# find / -name "libOpenVG"
    root@ubuntu:/app/test_qt#
    发现系统中缺少libOpenVG库,该怎么办呢?
    

你好,OpenGL ES的支持预计在3.2.0系统中更新

1 个赞

你好,请问最新的系统解决了这个问题吗

你好,请问现在解决了吗,我的系统是3.4.1,还是不能通过OpenGL ES来使用GPU加速渲染

结论:RDK X5 板端 GPU 渲染当前不可用

根据社区最新测试结果(2026年7月),即使系统版本升级到 3.4.1,板端 GPU 渲染仍然不可用。

:magnifying_glass_tilted_left: 问题根源

从你的 strace 输出和最新社区测试可以明确:

MESA-LOADER: failed to open vs-drm: /usr/lib/dri/vs-drm_dri.so: cannot open shared object file

核心缺失:vs-drm_dri.so 驱动库不存在,导致:

  • EGL 初始化失败(错误码 0x3001)
  • eglGetDisplay() 无法获取有效显示
  • Qt 只能使用 llvmpipe(CPU 软渲染)

:clipboard: 当前状态

检查项 状态 说明
libGLESv2 / libEGL :white_check_mark: 存在 库文件完整
libOpenVG :cross_mark: 缺失 确实不存在
vs-drm_dri.so :cross_mark: 缺失 关键驱动库
DRM 设备 :white_check_mark: 存在 /dev/dri/card0
GPU 驱动 :white_check_mark: 加载 Verisilicon (芯原)
实际可用性 :cross_mark: 不可用 驱动链不完整

:white_check_mark: 推荐替代方案

方案 1:X11 + CPU 渲染(立即可用):star::star::star:

# 使用 X11 平台而非 eglfs
export QT_QPA_PLATFORM=xcb
export QSG_INFO=1
python3 main.py

优点:系统已有 X11 环境(x11vnc 运行中),配置简单

方案 2:Web 端渲染(官方推荐):star::star::star::star:

# 参考官方 TTS 示例的 Web 输出方式
# 使用 Flask/FastAPI + HTML5 Canvas
# 或 Qt WebEngine 嵌入 Web 界面

优点:官方有完整示例,稳定可用

方案 3:BPU 计算 + CPU 渲染 :star::star::star::star:

# 典型架构
# BPU: 模型推理 (YOLO/检测/识别) - 使用 Hobot DNN 库
# CPU: 结果渲染 (OpenCV/Qt) - 足够应对 GUI 需求

:memo: 建议行动

  1. 联系官方确认

    • 在原地瓜社区帖子中 @官方人员
    • 询问 vs-drm_dri.so 是否有单独安装包或后续更新计划
  2. 临时开发建议

    • 2D 界面:使用 QT_QPA_PLATFORM=xcb
    • 模型推理:使用 BPU(Hobot DNN 库)
    • 结果绘制:使用 OpenCV(CPU)
  3. 关注官方更新

:speech_balloon: 你的具体应用场景是什么?

我可以帮你提供针对性方案:

  • 检测结果显示 → BPU + OpenCV 示例
  • 2D 界面开发 → Qt + X11 配置指南
  • 3D 可视化 → Web 端渲染方案