什么是 crtc,我可以使用 xrandr 启用多少输出?

nei*_*ond 23 multiple-monitors xrandr openbox

我正在使用 Lenovo x220i thinkpad,运行 crunchbang linux(使用 openbox 窗口管理器)。笔记本电脑的侧面有一个 DP 和 VGA 插头。

连接 DP 和 VGA 电缆并运行xrandr,我注意到以下输出可用/活动:

VGA1
DP1
LVDS1  <- the laptop screen
Run Code Online (Sandbox Code Playgroud)

如果我尝试启用超过 2 个(使用任意组合),则会收到错误消息“找不到用于 [VGA1/DP1/LVDS1] 的输出的 crtc”

crtc是什么?我如何知道有多少可用?是否可以在软件中或通过 PCI 卡添加更多内容?

谢谢。

Vas*_*pov 41

CRTC 代表“阴极射线管控制器”,但维基百科更喜欢“视频显示控制器”。

它们仍然通常被称为 CRTC - 技术术语有时变化缓慢。

总是有更复杂的解释,但一个足够的总结是,每个 CRTC 对应于视频卡上的一个视频缓冲区,该缓冲区是注定要输出的。我选择了这个特定的措辞来突出一些细微差别:

  • 软件屏幕,例如用于无头 VNC 服务器的屏幕,将使用 RAM 作为视频内存,与视频卡没有任何关系,或从其中获得任何硬件加速。不需要 CRTCc,因为它不在视频卡上。
  • 如果您使用视频卡渲染场景,然后将最终结果的缓冲区放回到内存/磁盘中,则不涉及 CRTC,因为尽管使用了视频卡的内存,但它并未绑定到输出。
  • 一个显卡可能支持将一个 CRTC 输出到多个显示器。它们必须具有相同的分辨率,并且可能(我不知道)必须具有相同的频率。简单地使用显示设置在两个或多个显示器上“显示同一屏幕”可能不会利用这一点,而是在两个 CRTC 上镜像最终缓冲区。到目前为止,确保将单个 CRTC 克隆到两个显示器上超出了我的技术能力。

所以要回答你的其他问题:

我如何知道有多少 [CRTC] 可用?

$ xrandr --listproviders Providers: number : 1 Provider 0: id: 0x4d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 10 associated providers: 0 name:Intel

请注意,像您一样,我的输出比 CRTC 多:crtcs: 4 outputs: 10输出数量众多是有充分理由的,主要归结为具有很多便利性的视频端口:

  • 如果支持菊花链, DisplayPort 连接器可能有 2 或 3 个与其相关联的输出。
  • DVI-I连接器可被划分成其数字和模拟组件来运行每种类型的一个监视器。旧的懒惰解决方案是在硬件中克隆这些,但现在视频设备通常具有与此类端口关联的 DVI 和 VGA 输出。
  • 笔记本电脑扩展坞可以轻松地将输出数量增加一倍,然后再增加一些,因为它们希望在扩展坞上提供大量额外连接器的便利性。
  • 视频设备可能有未实现的连接器,因为它已被匆忙投入生产,或者因为它是另一个设备的重新实现,但省略了一些连接器。

是否可以在软件中或通过 PCI 卡添加更多 [CRTC]?

由于 CRTC 是由 GPU 提供的,拥有更多的唯一方法是添加一个视频设备,该设备将与您已有的设备同时工作。我知道这是可能的,并且有很多限制,但仅此而已。你必须研究多个 GPU 设置,看看这对你来说是否可行。


PS 我今天刚刚学到了很多东西,并且在我自己的研究中偶然发现了你的问题。