Драйвер AMD Radeon составляет 10,5% ядра Linux 5.9
В связи с выходом ядра Linux 5.9 журналист Майкл Ларабель из издания Phoronix поигрался с утилитой cloc, посчитав количество строк кода.
Ядро Linux 5.9 содержит около 20,49 млн строк кода плюс 3,58 млн строк комментариев и 3,72 млн пустых строк. В целом ядро включает примерно 27,81 млн строк, распределённых между примерно 59 тыс. файлов с исходным кодом.
69964 text files. 69494 unique files. 10737 files ignored. github.com/AlDanial/cloc v 1.82 T=95.88 s (618.0 files/s, 290045.7 lines/s) ------------------------------------------------------------------------------ Language files blank comment code ------------------------------------------------------------------------------ C 29198 2900014 2367000 14781314 C/C++ Header 21123 588426 1022774 4640918 reStructuredText 2685 135238 59051 369738 Assembly 1275 45960 99012 225085 JSON 287 0 0 165799 YAML 1089 18494 4966 83627 Bourne Shell 657 16823 11350 66043 make 2592 9808 10864 44192 SVG 59 118 1365 37555 Perl 60 6686 4767 34393 Python 123 5345 4804 27720 yacc 9 695 354 4755 PO File 5 791 918 3077 lex 9 349 304 2130 C++ 10 345 134 1993 Bourne Again Shell 52 338 297 1750 awk 10 139 116 1051 Glade 1 58 0 603 NAnt script 2 143 0 549 Cucumber 1 28 50 175 Windows Module Definition 2 15 0 109 m4 1 15 1 95 CSS 1 28 29 80 XSLT 5 13 26 61 vim script 1 3 12 27 Ruby 1 4 0 25 INI 1 1 0 6 sed 1 2 5 5 ------------------------------------------------------------------------------ SUM: 59260 3729879 3588199 20492875 ------------------------------------------------------------------------------
В дерево исходных текстов ядра также входят различные инструменты, система сборки, множество документации и тому подобное. Это объясняет некоторые данные cloc, которые в противном случае могут показаться немного странными.
Графический драйвер AMDGPU содержит более двух миллионов строк кода, что делает его самым большим драйвером ядра в дереве. В Linux 5.9 он включает 2,16 млн строк кода плюс 247 тыс. строк комментариев и ещё 109 тыс. пустых строк. Или в сумме код драйвера AMD DRM занимает примерно 2,51 млн строк — включая AMDKFD, PowerPlay, DC и весь код ядра, в конечном счете составляющий поддержку AMD Radeon в этом драйвере (но не более старый драйвер Radeon DRM, который содержит около 157 тыс. строк).
Как сообщалось ранее, кодовая база драйверов AMDGPU настолько велика из-за автоматически генерируемых заголовочных файлов для регистров GPU и т. д. На самом деле 1,79 млн строк драйвера AMDGPU в Linux 5.9 — это просто заголовочные файлы, которые преимущественно генерируются автоматически.
Для сравнения, драйвер Intel i915, поддерживающий старую графику i915 через графику Gen12/Xe в Linux 5.9, содержит 209 тыс. строк кода плюс 39,2 тыс. строк комментариев и 48 тыс. пустых строк.
Если сравнить с опенсорсным драйвером NVIDIA Nouveau, то там всего 149 тыс. строк кода, 25,6 тыс. строк комментариев и еще 19,9 тыс. пустых строк.
P.S. Несколько часов назад Линус Торвальдс зарелизил ядро Linux 5.9. в котором масса замечательных нововведений, включая базовую поддержку видеокарт Radeon RX 6000 «RDNA 2», графики Intel Rocket Lake, ZNS (Zoned Namespaces) для NVMe и многое другое.