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/DRA746:屏幕用例出现黑屏问题

Guru**** 2556110 points
Other Parts Discussed in Thread: DRA746

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/597185/linux-dra746-black-screen-issue-with-splashscreen-usecase

器件型号:DRA746

工具/软件:Linux

尊敬的团队:

我们使用基于 DRA746和 SDK 3.02.00.03的定制硬件和软件。 我们要求平滑的拼接屏幕(意味着没有任何闪烁/黑屏/空白)。 我们目前拥有的
在控制台上使用 Linux 徽标实现了它。 它将显示并保持几乎3秒钟、然后我们看到黑屏几秒钟(不确定是什么原因导致了这种情况)、然后我们看到 GUI。

我们要删除此黑屏/空白并从闪屏转换到完整的系统 UI。 UI 基于 wayland/Weston 和 qt/qtwayland。

请您提供指导、我们如何实现这一点? 导致黑屏的原因是什么?如何避免这种情况? 我认为这是由于 Weston 启动或某些 DRM/DSS 初始化。

在执行 Google 操作时、我遇到了应用手册"DRA7x 器件上的早期启动界面"[1]。 这是否也通过基于 wayland/Weston 和 qt/qtwaylannd 的 UI 进行了测试? 此演示是否提供视频?

但是、这使用 u-boot 并显示闪屏。 在我们的情况下、我们不使用 u-boot 并使用自定义引导加载程序(初始程序加载程序)。

[1] www.ti.com/.../sprac49.pdf

谢谢、此致、
Vikash

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

    我已将您的问题转交给 DSS 专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ishaqe、
    我们的一些专家提出了以下意见。 我们尚未尝试您在上面提到的方法。 我们的方法也适用于 Weston/wayland、但用于启动界面的一个 DSS 流水线不会被回收以供内核使用。 3分钟快速视频中显示了无缝转换的视频:
    www.youtube.com/watch

    如您所注意到的、我们创建了一个应用手册来解决此特定问题:
    www.ti.com/.../sprac49.pdf
    发布的应用手册适用于3.14内核。 针对4.4内核/2016 u-boot 的补丁尚不可用。
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:

    感谢您的评论。

    我们需要一种通过内核在特定流水线上显示徽标/闪屏的方法、您能指导我们如何做到这一点吗? 他们的任何本机应用程序是否可用于此目的?

    我认为另一个选项是在 Weston 中禁用呼叫、该呼叫负责模式设置和清除屏幕、但不确定这是否可行且有效。 您能否检查这种方法是否可行?

    此致、
    Vikash
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vikash、
    只是为了确保我们没有两个线程以相同的方式运行-这与该线程中的问题是否相同:
    e2e.ti.com/.../594979
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:

    不、它是不同的。 此主题仅用于启动界面。

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

    我们没有本地应用程序来支持这一点、但我们可以建议一种方法。

    方法1.

    1.您可以启动 DRM 应用程序以显示徽标,比如启动应用程序。 此 DRM 应用程序可从 ramdisk 启动以缩短启动时间。 此 DRM 应用程序是初始显示主站。
    2.当 Weston 准备就绪时,它将使用启动应用程序执行 IPC。 Splash 应用程序让显示的读者率下降。 Weston 成为显示主控器并开始显示帧。 当显示主控配送更改时、可能会有一个或两个空白显示帧。

    方法2.

    1.启动界面应用程序可以增强为显示服务器。 它可以接受来自其他应用程序的缓冲区指针并将其显示在屏幕上。 它在启动时显示徽标。
    2. Weston 启动时,它会将显示帧发送到启动屏幕应用程序,而不是直接显示帧。 启动界面应用程序显示 Weston 框架而不是启动界面。

    在这种方法中、当显示代理更改时、不会出现空白帧。

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

    感谢您的建议。 在下面查找我的意见。

    方法1.

    这种方法似乎不适合 IVI 要求、因为您已经提到"当显示主设备更换时、可能会有一个或两个空白显示帧。"

    我还认为需要在 ramdisk (包含闪存应用程序)和 Real rootfs (包含 Weston 和所有其他必需的东西)之间切换、这可能会导致显示干扰。

    您是否有任何示例 DRM 应用程序可以在显示时显示图像?
    是否有任何 IPC 已退出? 如何使经销商减少? 不确定 IPC 是否可以在 ramdisk 和 Real rootfs 之间工作?

    方法2.
    我不确定这是否能满足提前启动的要求(2秒)。 我认为在系统中运行两个显示服务器(Weston 和 SPLI-APP)不是一个好主意。 您能否详细说明"闪屏应用程序可增强为用作显示服务器"? 这是如何实现的、在本例中、Weston 会发生什么情况?

    目前、我正在寻找利用任何可用视频流水线通过内核显示闪屏的方法(类似于在 sparc49.pdf 中的 u-boot 中所做的更改)、并让 Weston 在 GFX 流水线上启动。 您是否看到这是否可行?

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

    请参阅下面的纽约评论。

    方法1

    >>与您一样、此方法似乎不适合 IVI 要求
    已经提到"在时、可能会有一个或两个空白显示帧
    显示主发货更改。"

    我同意您的观点、即"一个或两个空白显示屏帧"是不可接受的。

    >>我还认为需要在 ramdisk 之间进行切换(其中将包含
    Splash 应用程序)到 Real rootfs (包含 Weston 和所有其他必需项)
    )、它可能会导致显示屏上出现干扰。

    我们在显示时完成了 ramdisk 和 Real rootfs 之间的切换
    应用程序正在链接的视频中运行。 您可以看到、没有
    干扰。

    www.youtube.com/watch

    >>您是否有任何示例 DRM 应用程序可以在显示时显示图像?

    您可以查看 SDK 中的 kmsview。

    https://github.com/tomba/kmsxx

    >>是否有任何 IPC 已退出? 不确定 IPC 是否可以在 ramdisk 和 Real rootfs 之间工作?

    任何标准 POSIX IPC 都应该起作用。

    >>如何减少经销人数?

    dri.freedesktop.org/.../drm-uapi.html

    方法2

    >>我不确定这是否符合提前启动要求(2秒)。

    如果出现闪屏、则应满足2秒闪屏要求
    屏幕由轻量级 DRM 应用程序呈现。

    >>我认为运行两个显示服务器(Weston 和
    启动界面应用程序)。 您能详细说明一下"闪屏应用程序"
    可增强为用作显示服务器"? 如何实现这一目标以及如何实现这一目标
    在本例中、Weston 会发生什么情况?

    显示屏只有一个所有者、即闪屏应用。 Weston 渲染
    使用 SGX 的 UI 并将缓冲区指针传递到闪存应用程序以进行显示。 。
    Splash 应用程序充当轻量级代理。 需要进行两项修改。

    1.需要修改 Weston 以将缓冲区传递到 SPLD-APP、而不是
    显示到屏幕。

    2.需要修改启动应用程序以接收来自 Weston 和显示的缓冲区
    它们会发出尖叫声。

    >>我目前正在寻找使用任何可用功能的方法
    用于通过内核显示闪屏的视频流水线(类似于中所做的更改
    u-boot 位于 sparc49.pdf 中)、让 Weston 在 GFX 流水线上启动。 您是否看到了 IF
    这是可行的吗?

    如果您想通过内核实现闪屏、我只能想到
    两种方法。

    但是、如果您也按照的建议从 M4控制显示
    在 e2e 问题下面、我建议改为从 M4执行启动屏幕。

    e2e.ti.com/.../594979

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

    感谢您的详细评论。

    为了测试您建议的方法、我想先通过 DRM 应用程序显示 SPLASH。 为此、我认为"drm_z_alpha.c"(glsdk-example-apps\drm-tests 的一部分)是最好的应用程序。 我进行了实验、当 Weston 启动且屏幕保持黑屏时、仍然可以看到闪烁/黑屏。

    -修改了 drm_z_alpha.c 以获得 z 阶数、全局 alpha 和预乘法的正确属性 id。 在"drmModeDirtyFB"后面添加了"drmDropMaster"、以丢弃 DRM 主站、以便 Weston 可以启动。 还将 Plane1修改为800x480。

    -使用以下参数运行修改后的应用程序。 此处为 id 为37的平面1 (VID2)、具有全全局 α、最高 z 阶;ID 为38的平面2 (vid3)、最低 z 阶且完全透明。 这将向我显示全屏模式。

    /drmzorder -s 800x480 -w 37:3:255:1 -w 38:0:0:1 &

    -现在我使用 systemd 启动 Weston。 即 systemctl start Weston。 此处、Weston 开始并显示为空白。

    我的预期是显示屏将继续显示 DRM 应用程序中的模式缓冲区、Weston 将启动而不会干扰显示屏。 我还尝试观察 DISPC_VID12_attributes、它对我来说是正确的。

    DISPC_VID12_attributes 显示以下值。
    root@linux1:~# devmem 0x5800115C 32
    0x5EA08411

    Weston 启动时出现此空白屏幕的原因可能是什么? 这是因为 Weston 占据了 DRM 的经销商吗? 我认为 Weston 不会通过查看 DRM 日志来接触任何 VID 平面,在这种情况下,它应该按预期工作。

    我在测试"drmzalpha"时发现的另一个问题。 当我尝试将 VID1用作平面1或平面2时,测试应用程序不起作用,并显示“无法启用平面1”。 参见吹气。 这是已知问题吗? 您能否从侧面测试并检查它?

    root@linux1:~./drmzorderx -s 800x480 -w 35:3:255:1 -w 37:1:255:1
    /dev/dri/card0打开成功!
    错误:omapdrm:dss:无法启用 Plane1
    root@linux1:~./drmzorderx -s 800x480 -w 37:3:255:1 -w 35:1:255:1
    /dev/dri/card0打开成功!
    错误:omapdrm:dss:无法启用 Plan2

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

    >>要测试您建议的方法、我想先通过 DRM 应用程序显示 SPLASH。 为此、我认为"drm_z_alpha.c"(glsdk-example-apps\drm-tests 的一部分)是最好的应用程序。 我进行了实验、当 Weston 启动且屏幕保持黑屏时、仍然可以看到闪烁/黑屏。

    这是上面列出的方法1。 在这种情况下、开关之间应该有一个或两个黑色的帧。 您是否说韦斯顿没有出现?

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

    >>在这种情况下,交换机之间应该有一个或两个黑色的帧。
    您是不是说这是因为 Weston 成为 DRM 的主人? 即由于 Weston 的 drmSetMaster API 调用。

    >>您是否说韦斯顿没有出现?
    否、Weston 已成功启动、因为我已从闪屏应用程序中删除了 DRM 主站。 但我不明白为什么在 VID2管道上显示显示显示应用程序时闪烁(并且 vid2管道也具有更高的 z 阶和最重要的优先级)、而 Weston 不使用 vid2管道、而仅使用 GFX。


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

    对此有任何进一步的建议吗?

    我想了解以下方法与 TI 的应用手册有何不同、以及它为什么不起作用。

    1. DRM 应用程序在 vid2上显示(drmzorder)徽标,显示的是最高 z 阶的徽标。
    2. Weston 从 gfx 开始,不触摸 vid2,显示黑屏,甚至直接操作 DSS 寄存器,之后也不显示徽标,只显示黑屏。 这是由 Weston 或任何其他 DRM API 调用的 drmSetCrtc 造成的吗? 在 Weston 或内核中是否可以避免这种情况?

    为什么 drmzorder 应用在 vid1流水线中失败?

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

    在应用手册中描述的方法中、一个流水线在 u-boot 中初始化、并且独立于内核保持活动状态。

    在您尝试的方法中、流水线处于内核控制之下。 闪屏应用程序将会使 DRM 的代理数下降、而 Weston 接管流水线可能会被释放。 我会检查并返回。

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

    为什么 drmzorder 应用在 vid1流水线中失败?

    在您尝试的方法中、流水线处于内核控制之下。 闪屏应用程序将会使 DRM 的代理数下降、而 Weston 接管流水线可能会被释放。 我会检查并返回。

    是否有关于上述主题的任何更新?

    此致、
    Vikash