gpt4 book ai didi

opengl - 如何在不成为 DRM 大师的情况下渲染到第二个屏幕?

转载 作者:行者123 更新时间:2023-12-01 13:17:13 27 4
gpt4 key购买 nike

我有一个嵌入式进程,可以直接使用 DRM 和 KMS API 呈现到屏幕上。它在最小的 Yocto 发行版上运行(没有桌面或 Wayland)。
我想渲染到从另一个进程连接到同一个 GPU 的第二个屏幕。第一个进程打开“/dev/dri/card0”并成为事实上的 DRM 主机,它可以在主屏幕上执行 drmModeSetCrtc 和 drmModePageFlip 以显示帧缓冲区。但是,如果我调用 drmDropMaster 它就不能再进行翻页了。因此,第二个进程不能成为 DRM 主机并使用相同的技术渲染到另一个显示器。

有很多关于如何使用直接渲染管理器 (DRM) 和内核模式设置 (KMS) 渲染到一个屏幕的示例,但我发现没有一个可以从另一个进程渲染到第二个屏幕。

设置显示模式后,如果可能的话,我希望没有大师,但翻页也是一个受限的 API。如果这无法实现,也许是一个关于如何使用 drmAuthMagic 授予第二个进程权限的示例?

最佳答案

如果不是 DRM 管理员,就不可能进行翻页。 IOCTL 在 drm_ioctl.c 中受到保护:

DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED)
DRM_IOCTL_DEF(DRM_IOCTL_SET_MASTER, drm_setmaster_ioctl, DRM_ROOT_ONLY),
DRM_IOCTL_DEF(DRM_IOCTL_DROP_MASTER, drm_dropmaster_ioctl, DRM_ROOT_ONLY),

所以我决定把翻转放在一个关键部分,应用程序调用drmSetMaster,安排翻转,然后调用drmDropMaster。它很重,两个进程都需要root,但它对于嵌入式平台来说已经足够好了。该过程必须使用 drmGetMagic 和 drmAuthMagic 对其自身进行授权,以便它能够在它不是主控时进行渲染并再次获得主控权。当它第一次成为主人并设置模式时,我会这样做。

关于opengl - 如何在不成为 DRM 大师的情况下渲染到第二个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53712830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com