适用于 Linux 内核的 NVIDIA 开源视频驱动程序

NVIDIA 宣布其专有视频驱动程序集中包含的所有内核模块都是开源的。 该代码在 MIT 和 GPLv2 许可证下开放。 在 Linux 内核 86 及更新版本的系统上,为 x64_64 和 aarch3.10 架构提供了构建模块的能力。 用户空间中使用的固件和库(例如 CUDA、OpenGL 和 Vulkan 堆栈)仍然是专有的。

预计该代码的发布将显着提高Linux系统上使用NVIDIA GPU的可用性,加强与操作系统的集成,并简化驱动程序的交付和问题的调试。 Ubuntu和SUSE的开发者已经宣布形成基于开放模块的软件包。 开放模块的存在还将简化 NVIDIA 驱动程序与基于非标准定制 Linux 内核构建的系统的集成。 对于 NVIDIA 来说,开源将通过与社区更密切的互动以及第三方审查变更和独立审核的可能性,帮助提高 Linux 驱动程序的质量和安全性。

值得注意的是,所提出的开放代码库同时用于专有驱动程序的形成,特别是在今天发布的测试分支515.43.04中使用。 在这种情况下,主要的一个是封闭的存储库,并且在经过一定的处理和清理后,建议的开放代码库将针对专有驱动程序的每个版本以强制转换的形式进行更新。 不提供单独更改的历史记录,仅提供每个版本驱动程序的一般提交(目前已发布驱动程序 515.43.04 的模块代码)。

然而,社区成员有机会提交拉取请求,以将他们的修复和更改推送到模块代码,但这些更改不会反映为公共存储库中的单独更改,而是首先集成到主私有存储库中然后才将其余更改转移到打开。 要参与开发,必须签署一份关于将所转让代码的产权转让给 NVIDIA 的协议(贡献者许可协议)。

内核模块的代码分为两部分:不依赖于操作系统的通用组件和与Linux内核交互的层。 为了减少安装时间,通用组件仍然以已组装的二进制文件的形式在专有的 NVIDIA 驱动程序中提供,并且该层在每个系统上组装,同时考虑到当前的内核版本和现有设置。 提供以下内核模块:nvidia.ko、nvidia-drm.ko(直接渲染管理器)、nvidia-modeset.ko 和 nvidia-uvm.ko(统一视频内存)。

GeForce 系列和工作站 GPU 支持被列为 alpha 质量,但数据中心计算加速和并行计算 (CUDA) 架构中使用的基于 NVIDIA Turing 和 NVIDIA Ampere 架构的专用 GPU 得到完全支持和全面测试,适合在生产中使用项目(开源已经准备好取代专有驱动程序)。 计划在未来版本中稳定对工作站的 GeForce 和 GPU 支持。 最终,开源代码库的稳定性水平将达到专有驱动程序的水平。

在目前的形式下,将已发布的模块包含在主内核中是不可能的,因为它们不符合内核的编码风格要求和架构约定,但 NVIDIA 打算与 Canonical、Red Hat 和 SUSE 合作解决此问题并稳定驱动软件接口。 此外,已发布的代码可用于改进内核中包含的开源Nouveau驱动程序,该驱动程序使用与专有驱动程序相同的GPU固件。

来源: opennet.ru

添加评论