现代 AMD Linux 内核图形驱动程序(AMDGPU/AMDKFD 代码)一直是主线 Linux 内核代码库中最大的驱动程序。鉴于现代 GPU 的复杂性,它比其他上游内核驱动程序要大得多,而且只会变得更大。
随着Linux 5.17内核可能在今天晚些时候发布,随后Linux 5.18合并窗口开始进行,我很好奇这个庞大的 AMD Linux 内核图形驱动程序的当前大小。
使用时钟为了计算行数,截至今天早上,Linux Git (v5.17) 是现代 AMD 驱动程序(linux/drivers/gpu/drm/amd/*;不包括旧 GPU 的前“radeon”DRM 驱动程序),它位于338 万行。这仅适用于内核图形驱动程序,不包括 Mesa 中用于 RadeonSI Gallium3D 和 RADV 或 AMD 的 AMDVLK Vulkan 驱动程序及其其他用户空间组件的用户空间部分。
这 338 万行来自 2.91 行实际检测到的代码、33.9 万行代码注释以及代码之间的 130 万行空白行。
338 万行非常重要,并且仍然很容易成为主线 Linux 内核中最大的驱动程序。相比之下,目前 DRM-Next 中的 Intel i915 内核显卡驱动只是341k 行代码。这是最新的 DG2/Alchemist 和 Xe HP 独立显卡的英特尔内核显卡驱动程序,它可以通过旧的 i915 时代集成显卡工作。 或者在使用linux.git
查看整个 Linux 内核源代码树时,截至今天上午,内核和其他包含的工具和Kconfig等代码已达3063万行。换句话说,AMD 内核驱动程序延续了一段时间以来 AMDGPU/AMKFD 的趋势,占整个 Linux 内核代码库的 10% 以上。考虑到大量的 Linux 内核驱动程序在数十年内支持各种硬件并支持各种 CPU 架构,这是一个相当大的成就。这 3063 万行来自 2270 万行实际代码、另外 384 万行代码注释和 403 万行空白行。
虽然 AMD 驱动程序的 338 万行相当大,但展望 Linux 5.18,它正在接近 400 万行。今天早上在为 AMD 代码测量 DRM-Next 时,它现在达到了 382 万!这来自检测到的 329 万行代码、391k 行注释和 136k 空白行。
尽管 AMD 驱动程序每个周期添加的许多新代码确实来自内部文档和寄存器数据中自动生成的头文件。随着作为支持的每个新 GPU 目标的一部分引入的所有头文件,驱动程序只会继续变得更大。值得庆幸的是,编译器消除了未使用的标头数据。这些详细的头文件很重要,因为 AMD 现在不太关注(或者除了着色器 ISA 之外的任何东西?)提供公共 GPU 文档,而是专注于官方 Linux 驱动程序代码作为参考点,这些头文件供外部各方学习更多关于 GPU 和可玩的位。
对于 Linux 5.18 中的 AMD 图形驱动程序,作为基于 IP 的发现/逐块提供新 GPU 支持的新策略的一部分,他们在新硬件支持方面做了更多工作。此外,下一个内核版本的 AMDGPU 驱动程序将默认启用 FreeSync 视频模式和其他更改。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun138691.html