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/AM3354:具有 SGX 且基于 Qt5的合成器的配置

Guru**** 2933120 points

Other Parts Discussed in Thread: AM3354

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663094/linux-am3354-configuration-for-qt5-based-compositor-with-sgx

器件型号:AM3354

工具/软件:Linux

您好!

我尝试使用 AM3354构建设置、AM3354应使用我们在 i.MX6上已使用的基于 Qt5 qtwayland 的合成器。

对于我的设置、我使用 meta-ti (Rocko)+ ti-linux-kernel (从 git 镜像://git.ti.com/ti-linux-kernel/ti-linux-kernel.git)。

此外、我还为以下项目设置了首选提供商:

preferred_provider_virtual/EGL="ti-SGX-DDK-um"
preferred_provider virtual/libgles1 ="ti-SGX-DDK-um"
preferred_provider virtual/libgles2 ="ti-SGX-DDK-um"
preferred_provider_virtual/libgl ="mesa-gl"
preferred_provider_virtual/mesa ="mesa-gl"
preferred_provider_libgbm ="libgbm"
preferred_provider libgbm-dev ="libgbm-dev"

根据 meta-AGL-BSP 的建议:

(gerrit.automotivelinux.org/.../gitweb

mesa-gl 的 bbappend:

#从 Mesa 中删除 GBM 支持
# TI 平台提供自己的 GBM 库

软件包_remove ="libgbm"
软件包_remove ="libgbm-dev"

EXTER_OECONF_remove ="-ENABLE-GBM" 

此外、我添加了 qtbase.bbappend:

PACKAGECONFIG +=" libinput\

fontconfig \
FreeType \
ICO \
GIF \
xkbcommon-evdev \
mtdev \
格列2 \
可访问性\
eglfs \
公里\
GBM \
"

PACKAGECONFIG_REMOVE ="示例\
测试\"

现在、我能够构建一个加载 PowerVR 驱动程序的映像:

root#/etc/init.d/rc.pvr 启动
已加载的 PowerVR 消费者服务。

并且能够使用 eglfs 后端启动 Qt5应用(这是来自 qtbase 的示例 analoglock)。

root#./analogeclock --platform eglfs
QStandardPaths:运行时目录/run/user/1000上的所有权错误,1000而不是0
无法加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:没有此类文件或目录
加载模块失败:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:没有
此类文件或目录加载模块: GBM_PVR.SO
找到有效的 GBM 后端:GBM_PVR.SO
无法为光标创建缓冲区!
在屏幕 LVDS1:-14上移动光标失败 


目前为止、这是可行的。 此外、qt wayland 示例合成器 qwindow-compositors 的起始在 eglfs 后端工作。 但是、如果我启动一个应使用 wayland 后端的应用程序、合成器将崩溃、并显示以下消息:

root#./analogeclock --platform wayland DUP 失败:
使用 Wayland-EGL PVR 的错误文件描述符:(错误):PVRSRVroyDestDeviceMemContext:无效的参数[0、]分段故障(转储的内核)[1]+ Aborted (转储的内核)/usr/share/qt5/examples/wayland/qwindow-compositor/qwindow-compositor --platform eglfs 

这是否可行?! 或者我配置了错误吗?

Thx、
Hannes

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否在/var/log?下共享您的 weston.ini 和 weston.log 此外、请共享 qtbase/build/config.summary。

    下面是我们的 Processor SDK Build qtbase.bbappend 的内容、该内容适用于 wayland 后端。

    FILESEXTRAPATHS_PREPEND:="${THISDIR}/${PN}:"

    GLES_Extra DEPS ="libdrm wayland"

    PACKAGECONFIG[gles2]="-OpenGL ES2 -eglfs、virtual/libgles2 virtual/EGL ${GLES_EXTER_DEPS}"

    PR_append =".arago12"

    QT_CONFIG_FLAGS +="-QPA ${@bb.utils.contains ('DISTRO_features '、'wayland'、'wayland'、'eglfs'、d)}"

    QT_EGLFS_PATCHS ="\
    文件://0001-Calculator-Add-exit-button-for-non-window-environmen.patch \
    文件://0002-animatedtils-Add-exite-button-for -non-window-environon.patch \
    文件://quit.png \
    "

    SRC_URI +="\
    ${@bb.utils.contains ('DISTRO_features '、'wayland'、''、"${QT_EGLFS_PATCHS}"、d)}\
    文件://0001-Deform-Fix-How-controls-are -shown.patch \
    文件://0002-Deform-disable-OpenGL-button.patch \
    "

    Python do patch_append(){
    导入 Shutil

    work_dir = d.getVar ("workdir"、True)
    S = d.getVar ("S"、True)

    如果不是 bb.utils.contains ('DISTRO_features '、'wayland'、True、False、d):
    shutil.copy (os.path.join (Work_dir、"quit.png")、os.path.join (s、"examples/widgets/animation_animatedtiles/images/"))


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

    您好、Manisha、

    感谢您的回复。

    我无法为您提供与 Weston 相关的任何内容、因为我不使用 Weston、正如我在设置之前所述、它由 Qt Wayland 合成器(在本例中为示例 qwindow-compositor)和 qt 客户端组成。

    因此根本没有 Weston。  

    我在您发布的配置设置中看不到任何新内容。

    此外、我直接尝试了来自 Qt 的 OpenGL 示例、例如使用 eglfs 后端的 helllog2和 openglwindow、它们工作正常。

    现在我完全不知道正在发生什么。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是我们在 AM57x GP EVM 上的 Processor SDK 上尝试过的、似乎可以正常工作。 有效的 QPA 为 eglfs_kms、此测试中未运行 Weston 合成器、但使用的后端是 Wayland-EGL。

    导出 QT_QPA_EGLFS_integration=eglfs_kms

    root@am57xx-EVM:~#/usr/share/qt5/examples/wayland/qwindow-compositor/qwindow-compositor -平台 eglfs &
    [1] 2023
    root@am57xx-EVM:~#未能加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:无此类文件或目录
    无法加载模块:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:无此类文件或目录
    加载的模块:GBM_PVR.SO
    找到有效的 GBM 后端:GBM_PVR.SO
    没有可用于输出"HDMI1"的模式
    查询 EGL 扩展失败

    根目录@am57xx-EVM:~#/usr/share/qt5/examples/widgets/painting/deform/deform
    使用 Wayland-EGL
    wlpvr:已初始化 PVR 服务
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们的图形软件堆栈在 AM335x、AM437x 和 AM57x 之间是通用的、因此在 AM57x 上工作的内容也应在 AM335x 上工作。 我上面对 AM335x 查询的 AM57x 的评论也是如此。  

    请帮助我了解您为什么要继续使用 QT wayland 合成器而不是 Weston 合成器? AM335x 上的 Processor SDK 支持 Weston 合成器、与 QT 1相比、该 SDK 应更可靠、功能完整。  

    我们不支持 QT 合成器、但我们平台上的快速运行建议它适用于 eglfs_kms 后端。 您是否可以访问 AM335x GP EVM? 如果是、可以尝试使用我们的 Processor SDK 软件在我们的 EVM 上运行您的要求。

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

    Weston 是一个不符合我们要求的合成器示例。 这就是我们基于 Qt Wayland 合成器 API 开发自己的合成器的原因。 我只告诉您使用 qWindow 合成器示例、因为它很容易找到、并且显示了相同的问题。

    我们已在其他 ARM CPU 上运行此设置。

    您在 AM57xx 上进行了测试、我认为那里的一切都与 AM3354上的情况不同。 我无法访问 EVM 板、我认为这是不必要的。

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

    我发现在 AM335x 上、QT wayland qWindow 合成器使用 eglfs_kms 后端成功启动、但 QT 客户端应用仅在屏幕上部分显示、有时复合器在触摸屏多次触摸时崩溃。 此观察结果与您报告的结果不同。 您可能会遇到一些与软件包构建相关的问题。

    默认的 QT QPA eglfs 或 eglfs_kms 似乎不支持 QT wayland 合成器。 根据下面的博文、QT 封装似乎具有特殊的 QPA (eglfs_viv_WL)来支持 i.MX6平台上的 wayland 合成器。

    Blog.qt.io/.../

    如前所述、我们仅支持 Weston 合成器、平台上不支持 QT wayland 合成器。 我们需要在后续步骤上保持一致、以便将其视为新功能请求。

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

    Johannes、您好!

    我们发现 、AM335x 上的 qwindow_compositor 可以很好地显示使用硬件加速渲染绘制的 qt5示例所需的图形、但使用软件渲染绘制的示例会黑屏。  

    运行良好的示例-

    • OpenGL/qopenglwidget/qopenglwidget
    • OpenGL/2dPaint/2 dPaint/2 dPaint/2
    • 快速/触控交互/触控交互
    • 速度/颗粒/ imagepartics/imageparticim
    • webenginewidget/simplebrower/simplebrowser

    绘制黑屏的示例-  

    • 小工具/喷漆/变形/变形
    • 小工具/小工具/模拟锁/模拟锁

    请注意、这些结果使用 QT 5.7。 我们还发现 qWindow 合成器在硬件加速工程图和软件渲染工程图的用户输入方面存在问题。 可能是用户输入与触摸坐标没有良好的映射、 因此导致合成器在用户多次触摸屏幕时崩溃。  

    我们将继续调查在 QT 5.7上具有软件渲染功能的黑屏和用户输入时合成器崩溃。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manisha、您能告诉我您使用了哪种系统映像吗? 我已将 QT_QPA_EGLFS_integration 设置为 eglfs_kms、但我遇到此错误:

    :~/usr/share/qt5/examples/wayland/qwindow-compositor/qwindow-compositor -platform eglfs &
    [1] 1071
    root@solix:~ qt.qpa.egldeviceintegration:无法加载 EGL 设备集成"eglfs_kms"
    EGL 库不支持仿真器扩展
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 AM335x EVM 上使用了 Processor SDK Linux 4.2中的映像。  该 SDK 是使用 processor-sdk-04.02.00.09-config.txt 配置的方法构建的

    请查看下面的 wiki 页面 、获取 适用于4.2 SDK 映像的正确方法。 您可以将此配置中的 QT5构建配方与您的配置进行比较。