【问题标题】:Linux DRM (Direct Rendering Manager) custom resolution and timingsLinux DRM(直接渲染管理器)自定义分辨率和时间
【发布时间】:2018-03-12 14:51:29
【问题描述】:

我正在尝试制作某种视频生成器来测试监视器。为此,我试图避免使用任何 X 和窗口管理器,所以我坚持使用非 GUI Linux。

我能够在 Linux 下直接写入帧缓冲设备,但我根本无法更改分辨率。 Fbset 没有任何效果。

a tutorial 的帮助下,我能够使用 DRM 更改分辨率,但只能更改我的屏幕显示它支持的模式。

有没有办法完全禁用 EDID 读取或注入自定义计时?

【问题讨论】:

  • 感谢您的评论。但我所说的 DRM 是指 Linux 直接渲染管理器。它是直接在图形卡上设置模式的界面。它是某种低级 API。
  • 顺便说一句,我认为您可能希望删除 DRM 标签,因为它通常在这里指的是数字版权管理,因此可能会误导人们。有趣的问题 - 您是否有理由避免使用 Windows 管理器来测试您的显示器?
  • 好点,谢谢。原因是我想确保没有驱动程序以某种方式操纵输出图像,并且我希望它既纤薄又快速。另外,由于我正在研究这个,我学到了很多 Linux 如何在其中工作,而我不会使用 GUI 应用程序。并且由于 X 可以忽略 EDID 并注入自定义计时,因此它也必须是可能的。我已经尝试在 X 及其组件的源代码中找到它,但不幸的是它的方式非常复杂。
  • 如果fbset 不适合你,那么你在让你的代码工作时也会遇到问题(它将使用与fbset 相同的内核接口)。您使用的是哪个帧缓冲驱动程序?是否有充分的理由不使用 KMS 驱动程序(它们还公开帧缓冲区接口,具有合适的内核配置)。鉴于我们还不能确定您的问题是系统问题还是代码问题,这个问题可能更适合Unix & Linux
  • 我很乐意使用 AMDGPU 驱动程序,但使用它我只能写入 fb0 设备并在屏幕上绘图。当我尝试使用 fbset 更改分辨率时,它会导致 tty 的字母变小,但显卡的输出信号保持不变。 fbset 也将时序显示为 0 0 0 ... 0。使用 Vesa 驱动程序,我从 fbset 获得了正确的时序,但根本无法更改分辨率。你能告诉我更多关于带有 KMS 驱动程序的 sutable 内核配置吗?

标签: linux screen-resolution timing framebuffer


【解决方案1】:

您可以在初始化 drm 之前将所需的任何值填充到 drmModeModeInfo 结构中。所以任何自定义视频模式都是可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多