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.

[参考译文] TDA4VEN-Q1:有关复杂图形渲染、LVGL 集成和显示架构的咨询

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1630142/tda4ven-q1-inquiry-regarding-complex-graphics-rendering-lvgl-integration-and-display-architecture

器件型号: TDA4VEN-Q1

尊敬的 TI 专家:   

    希望这封电子邮件对您有帮助。

    我们目前正在开发一个需要在现有图像/视频流之上添加复杂图形渲染(如绘制复杂形状和复杂图标)的项目。

  我们建议的架构:
    为了实现这一点、我们考虑了 基于 LVGL 的解决方案 。 其概念是让 LVGL 将 UI 数据渲染到专用图形层上、而原始视频流占用另一层。 在显示阶段、我们打算利用  DSS(显示子系统)硬件 对这些层执行硬件覆盖/混合以输出最终映像。

  架构困境:
    但是、我们面临着架构瓶颈。 当前、display node 在上运行  MCU2_0(主 R5F)  核心、而 LVGL 缺乏对的原生适应  VID2  API 和  DSS  驱动器。

    为了解决此问题、我们进行了头脑风暴、讨论了两个潜在的数据流路径、但这两个路径都有各自的权衡:

  • 路径 A(A 芯直接显示):  我们 display node 在上开发了一个运行的定制器件  A 型磁芯 。 LVGL 将利用标准 Linux DRM 框架直接推送显示、完全绕过基于 display node 主 R5F 的现有 FVID2。
  • 路径 B(A 内核渲染+ R5F 覆盖):  LVGL 在 A 内核上呈现 UI 缓冲区、然后将此呈现缓冲区传递到主 R5F(可能通过 IPC/共享存储器)。  display node 然后、主 R5F 上的将获取原始视频缓冲区和 UI 缓冲区、调用 DSS 驱动程序(通过 FVID2)以执行最终的硬件叠加。

    在此背景下、我们非常感谢您对以下两个问题的见解和建议:

  1. 关于 R5F DSS 驱动程序功能:  主 R5F 上的当前 DSS 驱动程序实现(通过 FVID2 API)是否完全支持多层硬件覆盖/混合? 具体而言、它是否可以同时管理和混合专用视频平面和单独的 UI 图形平面(理想情况下支持 α 混合)?

  2. 关于 LVGL 适应:  是否有更巧妙或更高效的实现策略来使 LVGL 适应我们的当前架构而不完全绕过 R5F 显示节点?
  3. 关于替代解决方案:  如果我们要远离 LVGL、您是否会推荐其他渲染框架或软件解决方案来处理这种复杂的图形叠加?

  感谢您的时间和专业知识。 期待您的见解与反馈。

此致、

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

    尊敬的 Nong:

    [引述 userid=“597897" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1630142/tda4ven-q1-inquiry-regarding-complex-graphics-rendering-lvgl-integration-and-display-architecture
    • 路径 B(A 内核渲染+ R5F 覆盖):  LVGL 在 A 内核上呈现 UI 缓冲区、然后将此呈现缓冲区传递到主 R5F(可能通过 IPC/共享存储器)。  display node 然后、主 R5F 上的将获取原始视频缓冲区和 UI 缓冲区、调用 DSS 驱动程序(通过 FVID2)以执行最终的硬件叠加。

    [/报价]

    具体方法是、我们有 openvx 显示节点、运行频率为 r5f、您可以提交来自 A53 内核的帧/缓冲区。 如果您还不知道是否可以查看 vision_app 演示。  

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/vision_apps/docs/user_guide/group_apps_basic_demos_app_single_cam.html

    其中使用 DSS 的 2 条视频管道显示 2 个流(摄像机馈送和摄像机馈送的性能统计信息)。

    您可以在此处引用应用程序$(psdkra)/vision_apps/basic_demos/app_multi_cam/main.c

    如果 LVGL 能够在共享内存中生成 openvx 格式的帧、则只需创建显示节点(第一个视频管道)并直接提交帧即可。

    同样、第二个显示节点(第二个视频流水线)可用于流式传输原始视频。 如果 LVGL 可以生成 RGBA 帧、则硬件叠加管理器将负责混合。

    您必须处理 tiovx 共享存储器区域中生成帧缓冲区的 2 个流。  

    [引述 userid=“597897" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1630142/tda4ven-q1-inquiry-regarding-complex-graphics-rendering-lvgl-integration-and-display-architecture
    • 关于 R5F DSS 驱动程序功能:  主 R5F 上的当前 DSS 驱动程序实现(通过 FVID2 API)是否完全支持多层硬件覆盖/混合? 具体而言、它是否可以同时管理和混合专用视频平面和单独的 UI 图形平面(理想情况下支持 α 混合)?

    [/报价]

    是、您可以混合来自 2 个流水线(只有 2 层)的视频、DSS 实例只有 2 个流水线。

    [引述 userid=“597897" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1630142/tda4ven-q1-inquiry-regarding-complex-graphics-rendering-lvgl-integration-and-display-architecture
    • 关于 LVGL 适应:  是否有更巧妙或更高效的实现策略来使 LVGL 适应我们的当前架构而不完全绕过 R5F 显示节点?
    [/报价]

    您可以参考现有的 vision_apps 演示

    [引述 userid=“597897" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1630142/tda4ven-q1-inquiry-regarding-complex-graphics-rendering-lvgl-integration-and-display-architecture
    1. 关于替代解决方案:  如果我们要远离 LVGL、您是否会推荐其他渲染框架或软件解决方案来处理这种复杂的图形叠加?

    [/报价]

    这是一个相当通用的答案、您可以使用 GPU 来呈现最终帧(混合 2 个流)并将其传递到显示节点。 但我建议查看上述方法、让您可以在其中使用 DSS 硬件。

    此致、
    Gokul