“接收器输出、源输出、接收器卸载、源卸载”对 GPU 意味着什么?

xuh*_*dev 9 linux xorg

我正在阅读此页面以学习设置混合 GPU 计划。但是标题中列出的术语是什么意思?

小智 9

啊,PRIME,也被称为“为什么这永远行不通”。冗长的解释如下...

因此,我假设您已经购买了(就像我一样)一台至少带有两张显卡的计算机。在某些系统上,这些共享您的计算机图形输出并通过某种切换机制连接到它们,通常称为 MUX(指 MULTIPLEXER),因此您基本上可以在 BIOS(或 UEFI)中设置一个参数,即应该使用什么显卡或连接到什么输出。

然而,大多数系统采用了更便宜、更复杂的共享图形缓冲区的替代方案。这意味着,例如,您的标准低功耗集成卡始终连接到您的显示器,并且在该输出上绘制的所有像素都必须以某种方式通过该卡。

如果您运行的只是轻量级应用程序,您可能只会使用内部卡。但有时你想用你强大的外卡来为你计算所有这些 3d 东西,所以你必须告诉 xrandr

  • 外部卡正在做一些工作(所有带有环境变量 DRI_PRIME=1 的程序都得到了)。
  • 内部卡必须将外部卡中的数据摆弄到外部卡上未计算的内容中,并在屏幕上绘制所有内容。

这称为“ GPU卸载”,在这种情况下,外部卡是“卸载源”,而内部卡是“卸载接收器”(因此数据流从源到接收器),您可以启用此功能(如果默认情况下未启用)与

xrandr --setprovideroffloadsink source_provider sink_provider

其中source_providersink_provider可能是您的图形驱动程序的名称,例如,nouveauIntel.

但是,在某些系统上,某些视频输出连接到外部卡。这意味着内部卡,完成不同程序的屏幕空间的所有摆弄,必须以某种方式将其输出发送到外部卡,然后外部卡只在其输出上绘制像素。在这种情况下,数据从一张卡的来源传到另一张卡的输出,要启用它,您必须使用它。

xrandr --setprovideroutputsource output_provider source_provider

哪里output_provider是外部卡的名称,它连接了以前无法访问的输出,source_provider是集成卡,它进行数据处理,但不能绘制连接到外部卡的输出。

最后一件事,如果您同时启用了这两种方法(这可能发生),图形密集型应用程序的内容将在“好”卡上计算,发送到“跛脚”卡,与屏幕空间的其余部分,有时会被送回“好”卡,在那里它会被绘制在屏幕上。所有这些的缺点是,所有“屏幕空间摆弄”(也称为渲染)都是在“跛脚”卡上完成的,这可能很慢。

为了解决这个问题,您必须将进行所有渲染的卡(称为主 GPU)从集成的显卡更改为外部显卡,(据我所知)如果不重新启动 X 服务器就无法完成,并且它需要您摆弄 Xorg 配置文件。

如果你愿意,我可以给你很多关于我如何设置的信息(Arch Linux、带有英特尔和 nouveau 驱动程序的联想 W530、i3wm),否则,我建议你阅读man xrandr.