This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3358:QQuickWindow 问题

Guru**** 2933120 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664775/linux-am3358-qquickwindow-issue

器件型号:AM3358

工具/软件:Linux

您好!

我想用 QQuickWindow (grabWindow)获取 QML GUI 的屏幕截图。

创建了图像文件、但在黑色背景上仅显示几条彩色线条。
在此过程结束期间,我将获得“PVR:(错误):glReadPixels:无法获取删除数据[0,]”。

我找到了其他一些主题、并显示了相同的错误消息:
https://e2e.ti.com/support/arm/sitara_arm/f/791/t/619737
http://e2e.ti.com/support/arm/automotive_processors/f/1020/t/662725
https://e2e.ti.com/support/omap/f/885/t/421553

我使用此存储库:Git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git
如果是错误、我需要在接下来的几天内针对 target_product=ti335x 进行错误修复。

提前感谢!

Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Stefan、

    我们将对此进行研究并返回。  

    此致、

    Manisha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    这对我们来说是一个已知问题、修复程序将作为定于2018年第1季度末发布的下一个 Processor SDK 版本的一部分提供。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    感谢您的回复。

    是否也可在 repo git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git?上获取

    BR、
    Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Stefan、

    您是否在陆地上使用 QT 或在具有 eglfs 的 QT?

    此致、

    Manisha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    我们将 Qt 与 eglfs 一起使用(git://git.ti.com/graphics/omap5-sgx-ddk-linux.git、git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git、git://git.ti.com/glsdk/libgbm.git)。
    但如果没有 libwayland-server.SO.0、它将无法正常工作。 此库是必需的。


    此致、
    Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    eglfs 将依赖 libwayland-server.so、这毫无意义。 您是否正在使用 Weston 合成器或任何其他 wayland 合成器? 如果不是、则可能是构建依赖项问题。

    如果您的应用程序只使用 libpvrGBMWSEGL.so、它应该已经可以工作了。

    如果您确实在使用航迹、则需要该补丁进行修复。 不幸的是、我无法很快解决您的问题。 请期待2018年第3季度发布。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    感谢您的支持!

    libpvrGBMWSEGL.so、libsrv_um.SO.1、libGLESv2.so、... 需要 libwayland-server.SO.0、例如:
    objdump -p libpvrGBMWSEGL.so |需要 grep
     需要              libdrm.so.2
     需要              libgbm.SO.2
     需要              libudev.SO.1
     需要              libwayland-server.so.0
     需要              libdrm_omap.so.1
     需要              libffi.so.6
     需要              libdbm.so.1
     需要              libsrv_um.so.1
     需要              libpthread.SO.0
     需要              libc.so.6
     需要              ld-linux-armhf.so.3

    libpvrGBMWSEGL.so、libsrv_um.SO.1、libGLESv2.so、... (REPO:Git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git)由 TI 预编译。

    我不使用 Weston 合成器或任何其他 wayland 合成器。

    我不知道如何解决这个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们正在研究 libpvrGBMWSEGL.so 为何依赖于 libwayland-server.so.0。

    我在之前的帖子中提到的已知问题不适用于 libGBM EGL。 您是否使用了 eglfs_kms QPA?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    我在 Qt 应用程序启动之前设置"QT_QPA_EGLFS_integration=none"、因为我只使用一个显示屏。
    如果未设置此环境变量、我将收到一条错误消息:
    [26.149737]  已加载模块:GBM_PVR.SO
    [26.152029]  找到有效的 GBM 后端:GBM_PVR.SO
    [26.327490]  无法在屏幕 LVDS1:-14上移动光标

    我不使用 LVDS。 显示屏与 LCD_DATA0...23并联。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请设置 QT_QPA_EGLFS_integration=eglfs_kms、即使您使用的是单个显示。 使用 libGBM EGL 时需要使用的 QPA。 让我们知道您的应用在使用该 QPA 后的行为。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    如果我设置 QT_QPA_EGLFS_integration=eglfs_kms、我将获得与我上一篇文章中所述相同的消息:
    [26.149737]  已加载模块:GBM_PVR.SO
    [26.152029]  找到有效的 GBM 后端:GBM_PVR.SO
    [26.327490]  无法在屏幕 LVDS1:-14上移动光标

    tilcdc 创建一个 LVDS 器件:
    # ls -l /sys/class/drm
    总计0
    lrwxrwxrwx   1 root    root 用户            0 7月12日14:01 card0 ->../../devices/platform/ocp/4830e000.lcdc/drm/card0
    lrwxrwxrwx   1 root    root 用户            0 7月12日14:01 card0-lvds-1->../../devices/platform/ocp/4830e000.lcdc/drm/card0/card0-LVDS-1
    lrwxrwxrwx   1 root    root 用户            0 7月12日14:01 Card1 ->../../devices/platform/ocp/56000000.sgx/drm/card1
    lrwxrwxrwx   1 root    root 用户            0 7月12日14:01 controlD64 ->../../devices/platform/ocp/4830e000.lcdc/drm/controlD64
    lrwxrwxrwx   1 root    root 用户            0 7月12日14:01 renderD128 ->../../devices/platform/ocp/56000000.sgx/drm/renderD128

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    我设置了以下环境变量:
    QT_QPA_EGLFS_NO_LIBINPUT=1
    QT_QPA_EGLFS_HIDECURSOR=1  (阻止错误消息:"无法在屏幕上移动光标 LVDS1:-14")
    QT_logging_rules=qt.qpa.*=true

    ...我收到以下日志记录消息:
    QT.QPA.egldeviceintegration:EGL 器件集成插件密钥:("eglfs_emu"、"eglfs_kms")
    Qt.QPA.egldeviceintegration:EGL 器件集成插件密钥(排序):("eglfs_kms"、"eglfs_emu")
    QT.QPA.egldeviceintegration:尝试加载器件 EGL 集成"eglfs_kms"
    QT.QPA.eglfs.kms:通过 GBM 集成创建了新的 DRM/KMS
    QT.QPA.egldevicesintegration:使用 EGL 器件集成"eglfs_kms"
    QT.QPA-eglfs.kms:platformInit:正在打开 DRM 器件
    适用于 QFlags 类型的 qt.qpa.input: udev 设备发现 (DEVICE_DRM|Device_VideoMask)
    qt.qpa.input:找到匹配的器件("/dev/dri/card0、"/dev/dri/card1)
    QT.QPA.eglfs.kms:找到以下视频设备:(“/dev/dri/card0”、“/dev/dri/card1”)
    Qt.QPA.eglfs.kms:使用“/dev/dri/card0”
    QT.QPA.eglfs.kms:使用后端提供的 DRM 器件/dev/dri/card0
    Qt.QPA.eglfs.kms:为从/dev/dri/card0获取的文件描述符5创建 GBM 器件
    加载的模块:GBM_PVR.SO
    找到有效的 GBM 后端:GBM_PVR.SO
    QT.QPA.eglfs.kms:"LVDS1"模式计数:1.
    QT.QPA-eglfs.kms:模式0320 x 240 @ 84Hz
    QT.QPA.eglfs.kms:所选模式0:320 x 240 @ 84Hz,用于输出“LVDS1”
    QT.QPA.eglfs.kms:输出"LVDS1"的物理尺寸为 QSizeF (70、52) mm
    QT.QPA.eglfs.kms:创建新的全局 GBM 鼠标光标
    QT.QPA.eglfs.kms:排序屏幕列表:QVector (OrderedScreen (QPlatformScreen=0x3e0e60 ("LVDS1"):2147483647 / QPoint (0、0)/ Primary:false))
    QT.QPA.eglfs.kms:将 QPlatformScren 0x3e0e60 ("LVDS1")添加到几何 QRect (0、0 320x240)且 isPrimary = false 的 QPA 中
    qt.qpa.input: evdevkeyboard:使用设备发现
    适用于 QFlags 类型的 qt.qpa.input: udev 设备发现 (设备键盘)
    qt.qpa.input:找到匹配的器件("/dev/input/event1)
    qt.qpa.input:在"/dev/input/event1 "添加键盘
    qt.qpa.input:尝试为"/dev/input/event1 ""创建键盘处理程序
    qt.qpa.input:打开键盘,网址为“/dev/input/event1”
    qt.qpa.input:为设备"/dev/input/event1 "创建键盘处理程序
    qt.qpa.input:卸载当前键位映射并内置恢复
    qt.qpa.input: numlock=0、capslock=0、scrolllock=0
    qt.qpa.input: evdevmouse:使用设备发现
    适用于 QFlags 类型的 qt.qpa.input: udev 设备发现 (Device_Mouse | Device_Touchpad)
    qt.qpa.input:找到匹配的器件()
    qt.qpa.input: evdevtouch:使用设备发现
    适用于 QFlags 类型的 qt.qpa.input: udev 设备发现 (Device_Touchpad | Device_Touchscreen)
    qt.qpa.input:找到匹配的器件("/dev/input/event0)
    qt.qpa.input: evdevtouch:在"/dev/input/event0 "添加设备
    qt.qpa.input: evdevtouch:使用器件/dev/input/event0
    qt.qpa.input: evdevtouch:/dev/input/event0:协议类型 B (多)、filter=no
    qt.qpa.input: evdevtouch:/dev/input/event0:最小值 X:0最大值 X:319
    qt.qpa.input: evdevtouch:/dev/input/event0:最小 Y:0最大 Y:239
    qt.qpa.input: evdevtouch:/dev/input/event0:最小压力:0最大压力:0
    qt.qpa.input: evdevtouch:/dev/input/event0:器件名称:cyttsp5_mT
    QT.QPA.eglfs.kms:为屏幕"LVDS1"创建窗口

    在"为屏幕"LVDS1"创建窗口后、不会发生任何情况...

    QT.QPA.eglfs.kms:为屏幕"LVDS1"创建窗口
    systemd[1]:退出 gui.service:主进程,代码=转储,状态= 11/SEGV
    systemd[1]:gui.service:设备进入失败状态。
    systemd[1]:gui.service:失败,结果为“核心转储”。



    BR、
    Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QT 配置

    QT GUI:
    无障碍环境 是的
    FreeType ........................................................................ 是的
    使用系统 FreeType ........ 是的
    哈夫布茨 是的
    使用系统 HarfBuzz 否
    字体配置.......................................................................... 是的
    图像格式:
    GIF .................................................................................................. 否
    ICO…………………… 是的
    JPEG ................................................................. 是的
    使用系统 libjpeg ........ 是的
    巴布亚新几内亚 是的
    使用系统 libpng ........ 是的
    EGL…………………… 是的
    OpenVG ................................................................. 否
    OpenGL:
    台式机 OpenGL ........ 否
    OpenGL ES 2.0 .................................. 是的
    OpenGL ES 3.0 .................................. 否
    OpenGL ES 3.1.................................. 否

    QPA 后端:
    DirectFB…………………… 否
    EGLFS……………………… 是的
    EGLFS 详细信息:
    EGLFS i.MX6 否
    EGLFS i.MX6 Wayland………………………………………… 否
    EGLFS EGLDevice 否
    EGLFS GBM 是的
    EGLFS 马里 否
    EGLFS Raspberry Pi………………………… 否
    X11上的 EGL ........ 否
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    我将咨询图形后端专家并返回。

    此致、
    Manisha
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    您能否共享可帮助我们在最终重现问题的独立最小测试应用?

    此致、
    Manisha
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    附件是一个简单的独立测试应用: /cfs-file/__key/communityserver-discussions-components-files/791/ti_5F00_test_5F00_app.zip

    "TI_TEST_APP"是使用 Qt5.9.0编译的二进制文件

    此致、
    Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    我们在 Processor SDK 中不支持 QT 5.9。 我们使用 QtQuick 2.0版本使用 QT 5.7运行您的应用程序。 我们最终能够在进行这些更改后运行应用程序。 我们在蓝色背景上看到一个红色方形、在串行端口的日志下方看到一个红色方形。 这是您的应用程序打算做的吗?

    root@AM335x-EVM:~./ti_test_app -平台 eglfs
    无法加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:无此类文件或目录 共享/qt5/examples/widgets/widgets/analogeclock/analogecloc
    无法加载模块:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:无此类文件或目录
    加载的模块:GBM_PVR.SO
    找到有效的 GBM 后端:GBM_PVR.SO