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.

[参考译文] DRA74P:用于设置 DRM 主站的 DRM ioctl API

Guru**** 2539140 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/935282/dra74p-drm-ioctl-api-usage-for-setting-drm-master

器件型号:DRA74P

您好!

对于 DRM ioctl API、我有几个问题:

我正在尝试在 qt 应用程序上创建多帧缓冲区、而不使用 qt、这意味着通过使用内核 DRM ioctl API 从另一个可执行文件显示一些警告对话框。首先我成功打开了/dev/dri/card0、但在使用 ioctldrM_IOCTL_set_master 设置到 DRM 主控方时、我收到错误 从显示 DRM 主站已设置的内核中。当我调试此问题时,我观察到 DEV->MASTER 在 DRM_setmaster_ioctl 函数上已为 true,并且由于 qt 应用程序(在 wayland 上运行),直接退出函数而不在 drivers/GPU/DRM/DRM_DRM_auth.c 文件上设置主站。因此, 调用 DRM_IOCTL_MODE_SETCRTC ioctl 调用时出现权限被拒绝错误。

如果我删除 qt 应用程序并运行我的开发应用程序以在屏幕上绘制某种形状、因为此时没有 DRM 主控器、我可以成功设置 DRM 主控器。因此、我观察到有一些 ioctl 调用来共享主控权限 DRM_IOCTL_AUTH_Magic、但 这对我没有帮助。我可以通过从 drivers/GPU/DRM/DRM_auth.c 中删除 DRM_setmaster_ioctl 函数上的 dev->master check 来破解内核代码、但这不是一种好方法。

您能给我一些问题的方向、看看我遗漏了什么?

当我尝试为帧缓冲区设置不同于 HDMI 分辨率(1280x720)的大小时、我在屏幕上没有看到我在问题1上使用的可执行应用程序的任何绘图形状、您能帮助我使用 DRM ioctl API 创建不同大小的帧缓冲区吗?
请给我一些关于 DRM 帧缓冲区和 DRM 平面的详细信息。我对这些功能的使用有点困惑。所以我想在屏幕上的不同位置显示一些警告对话框、qt 应用顶部的一些信息栏、 不使用我在第一个问题中提到的 qt 函数,并且需要知道我需要使用哪个函数,帧缓冲区或平面? 请给我一些想法和信息吗?
此致


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

    您好、Ekrem、

    首先、您能否提供正在使用的 SDK 版本。

    谢谢、

    KB

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

    尊敬的 KB:

    SDK 版本为:Processor SDK 5 (Yocto 发行版)。

    此致

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

    谢谢 Ekrem、

    对拖延表示歉意。

    此处介绍了如何查看 DSS (显示子系统)以及它与 DRM 的关系

    DRM 实体到 DSS 硬件的映射大致如下:

    基准面 -> DSS 管道/叠加
    CRTC ->DSS 覆盖管理
    器编码器-> DSS 输出、编码器、显示
    连接器-> DSS 输出、编码器、显示 

    从 H/W 的角度来看、如果可以使用专用 DSS 流水线来显示 QT HMI 顶部的内容、这将是理想情况。  从 DRM 的角度来看、管道被视为平面、帧缓冲区内容将被分配给平面。 一个或多个平面可分配给 CRTC (覆层)。

    管道/平面的 zorder 可进行调整、使其内容位于前台(可见)或显示屏的背景中。   

    上面和 这里提供的链接上提供了其他信息和一些示例

    此致、

    KB





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

    尊敬的 KB:

    感谢您的详细解释。从您提供的示例以及根据我之前的调查、 在我看来、我需要使用 ioctl DRM_IOCTL_SET_MASTER 设置 DRM 主站以将平面设置到 QT 应用程序、我认为这是不可能的、因为 wayland 已经设置了 DRM 主站。

    您是否有任何想法或示例来解决此问题?

    此致

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

     您好、Ekrem

    遗憾的是、QT 和 Wayland 都无法访问正在讨论的 H/W 叠加功能(无需修改代码)。 在内部讨论时,使用 Weston IVI-shell 可能会获得所需的覆盖层。”

    有关详细信息,请参见 software-dl.ti.com/.../Graphics_and_Display.html 请注意、本页未将 DRA7x 列为支持的器件。

    此致、

    KB

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

    尊敬的 KB:

    感谢您提供这些信息。所以,通过使用 Weston IVI shell,是否可以使用 DRM ioctl API,因为我不想使用任何其他 API?

    此外、对于使用的技术不是 wayland、我还想使用 DRM ioctl API 来做一些通用人员。

    包括 wayland 和 Weston 在内的大多数技术都使用 DRM ioctl API、但通过您提供的链接、我必须在 wayland 或 Weston 内部进行一些修改

    在未使用航迹时可能导致返工。

    您是否有任何想法来管理它? 或者我是不是往错误的方向思考?

    此致

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

    您好、Ekrem、

    通常、组合器在后台使用 DRM API、组合器不允许客户端/应用程序直接与 DRM API 代码连接。

    如果需要 QT/Wayland、则除非修改了 Weston 代码、否则不能使用 DRM ioctl API。  这不是 TI 提供的。

    移动到任何其他合成器可能会受到相同的限制。

    此致、

    KB

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

    尊敬的 KB:

    非常感谢您提供的宝贵信息。 根据您的意见,当有新的作曲家时,我必须使用 Weston/wayland API 来管理我的目标

    我必须使用新 API。 您是否有用于我的目标的 wayland/Weston API 使用的文档/示例?

    此致

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

    您好、Ekrem、

    以下是一些 Wayland / Weston 链接:

    http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components/Graphics/Graphics_and_Display.html#wayland-weston

    https://wayland.freedesktop.org/

    https://at.projects.genivi.org/wiki/display/PROJ/Wayland+IVI+Extension+Design

    此致、  

    KB

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

    尊敬的 KB:

    感谢您提供的所有信息和帮助。我将尝试深入了解您提供的信息。

    此致