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/AM5728:呈现 Qt GUI 以及视频流

Guru**** 2585275 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/634200/linux-am5728-rendering-qt-gui-along-with-video-stream

器件型号:AM5728

工具/软件:Linux

我在定制板上使用 AM5728。 我有2个摄像头连接到2个 VIP 端口。 我使用 V4L2成功地从这些端口捕获帧、并使用自定义 OpenGL 着色器将它们合成到 SGX GPU 中。 我正在使用 DMABUF 导入扩展将纹理上传到 GPU、从而不存在 memcpy。 我能够从 GPU 获取最终的 DMABUF。 在我调用"drmModePageFlip"后、生成的视频同时显示在 HDMI 监视器以及连接的 LCD 上。

因此、大多数管道工作正常。  

我的下一个挑战是使用 Qt 的 linuxfb 插件将 GUI 呈现到 fb0中。 我编写了一个非常简单的 Qt 应用程序、在 fb0上显示小工具。 如果我启动板并运行此应用程序(在打开 omapdrm、配置 GPU 和创建 OpenGL Surface 之前),则简单的 GUI 在 LCD 上显示正常。 但是、如果我创建 OpenGL 表面并将 DMABUF 呈现到屏幕、然后运行简单的 Qt 应用、则无法在屏幕上看到 GUI。 此时、我可以在屏幕上将/dev/fb0扫描到文件、并在图像查看器中进行查看。 Qt 明确将 GUI 绘制到/dev/fb0.中 配置 GPU 似乎会导致一些冲突、从而阻止/dev/fb0内容与视频流一起显示。  

我想我需要将 GUI 提交给着色器作为纹理和合成它,但我认为这意味着我需要在 每个呈现调用中创建一个 dumb DMABUF (DRM_IOCTL_MODE_CREASE_DUB)和 memcpy /dev/fb0数据。 这将会降低我的性能。 如果我可以使用 OpenGL DMABUF 上传扩展、那么它的速度可能会足够快。 问题是、我需要从 OMAP-bo 对象中获取一个 GBM_bo 对象-我没有看到这样做的方法。  

我应该使用什么方法来呈现 Qt GUI 以及视频流? 感谢您的任何建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    zorder 设置似乎不正确,并阻止图形稍后显示。 请参阅 Processor SDK 中示例应用文件夹下的双摄像头演示应用。 在该应用中、图形使用 linuxfb QT 插件绘制、视频缓冲区的视频覆盖和缩放在显示时由 DSS 即时处理。

    查找各种平面的 zorder 设置。