安装 GPU 驱动程序后,Linux 图形堆栈会发生哪些变化?

安装 GPU 驱动程序后,Linux 图形堆栈会发生哪些变化?

这张来自维基百科的图片说明了所谓的“Linux 图形堆栈”。

Linux 图形堆栈

假设我买了一台很新的笔记本电脑,没有适用于其 GPU 的专用设备驱动程序。因此,图形质量很差,直到有一天,一些体面的开发人员创建了一个出色的免费驱动程序,并且通过更新我的 Linux 发行版,我注意到图形质量变得非常出色且完美无缺。我的问题是:更新如何改变了图形堆栈?特别是,我想知道新的图形驱动程序是否仅在用户空间中运行,或者至少其一部分在内核空间中运行。顺便说一句,我不是一个非常高级的 Linux 用户。请记住这一点。 :)

答案1

在这些图形上,图像堆栈并没有真正改变(因此在抽象层面上)。大多数程序不会注意到任何差异(但例如,如果它们测量每秒的帧数)。

但读取的文件几乎没有变化。

第一个变化是 Linux 内核,或者更好的内核模块。新的显卡可能需要新的驱动程序。注意:许多驱动程序都非常通用,因此如果您只使用现有系列中的新 GPU,大多数功能都可以正常工作,但可能无法充分发挥潜力。或者最终应该输入一些启动参数(或者更好:模块参数)来接受未知的卡。内核主要处理权限和资源,所以不是使用视频卡。

其他变化是在用户空间,例如上图中:libGL(渲染、计算),并且可能有其他驱动程序来处理其他部分(颜色管理、屏幕管理、GPU 中的计算等)。当您安装程序时,包管理器将安装一个通用驱动程序,该驱动程序将完成可能使用 GPU 的工作(或者只是告诉没有可用的 GPU)。这里主要工作已经完成(或者更好:委托):一个程序告诉:我需要这样的效果,并且库将在 CPU 上完成它,委托给 GPU 或混合(分解并向 GPU 发送大量操作)。再次强调:如果您不使用新的 GPU 系列,某些功能将被识别并使用。虽然没有充分发挥潜力,但它会减轻 CPU 的负担。

不要高估 GPU 上的差异。大多数架构保持不变。基准测试会有很多改进,但架构是相同的:可能会有一些优化、新内核、更多内存等,这些可能会被旧驱动程序识别。可能还有新功能(例如光线追踪、3D 阴影等),但在这种情况下,新的驱动程序不会有太大帮助,直到出现使用这些功能的程序(以及实现它的库/驱动程序)。

因此,在 Ubuntu(和其他发行版)上:您可能会从一开始就获得一些支持(非常基本,又名新类型的 VESA,高级但在其他情况下未完全优化)(与其他制造商相比,某些制造商在 Linux 中更加活跃)。要获得全面支持(驱动程序),您可能需要更多时间(如果是新架构,则需要更多时间;如果没有好的文档,则需要更多时间,请参阅“Apple Silicon”中的 GPU)。并且您需要更多时间(如果每个它都会得到它)来获得程序和游戏(和库)的全面支持。

相关内容