Новый драйвер AMDGPU-PRO 16.50. Разработчики ядра Linux отклонили изменения с поддержкой новых GPU AMD
Компания AMD опубликовала выпуск проприетарного драйвера AMDGPU-PRO 16.50 для Linux, основанного на свободном модуле ядра AMDGPU, развиваемом в рамках инициативы по унификации графического стека AMD для проприетарных и открытых видеодрайверов. Драйвер сформирован для Ubuntu 16.04, RHEL/CentOS 7.3, RHEL/CentOS 6.8 и SLED/SLES 12 SP2.
Выпуск примечателен поддержкой новых GPU на базе микроархитектуры GNC 1.0, таких как AMD Radeon R7 M465X/M370/M350, а также поддержкой DirectGMA для OpenGL и технологии FreeSync. Из возможностей драйвера отмечается поддержка API OpenGL 4.5, GLX 1.4, OpenCL 1.2, Vulkan 1.0 и VDPAU, наличие базовых средств для управления экраном и питанием, поддержка интерфейсов KMS (Kernel Mode Setting) и ADF (Atomic Display Framework), совместимый с лицензией GPL модуль ядра, поддержка возможностей FirePro (управление EDID и 30-разрядная цветность).
Кроме того, компания AMD подготовила достаточно большой патч для поставляемого в составе ядра Linux модуля AMDGPU, переработав код управления отображением (DC, Display Core) для обеспечения поддержки будущего поколения GPU (uGPU), а также добавив ряд новшеств, таких как средства для организации вывода звука через HDMI и DisplayPort. Размер изменений составил порядка 100 тысяч строк кода.
В ответ на предложенный патч, Дэвид Эйрли (David Airlie), работающий в компании Red Hat и отвечающий в Linux-ядре за поддержку DRM (Direct Rendering Manager), отказался принимать подобные изменения, пояснив, что AMD пытается вместо использования унифицированного для всех драйверов интерфейса интегрировать свой собственный слой для обеспечения взаимодействия с оборудованием (HAL). Подобные специфичные решения затрудняют понимание логики работы кода и замедляют развитие DRM (Direct Rendering Manager). Эйрли не может принять такие изменения, так как это подорвет доверие Линуса, сообщества разработчиков графических систем и участников разработки DRM-драйверов.
Вместо того, чтобы работать вместе с сообществом и с учетом его интересов, компания AMD продолжает замыкаться на своих внутренних надстройках, необходимых для решения частных проблем компании (попытка унификации с драйвером для Windows). По мнению Эйрли, если AMD необходимо обеспечить поддержку дополнительной функциональности, такой как FreeSync или новых возможностей HDMI, это следует делать совместно путем расширения существующих интерфейсов, а не придумывать новые уровни абстракции и создавать специфичные для драйвера ioctl. В настоящий момент AMD по сути не участвует в развитии Linux-стека и не использует его, продвигая свои специфичные решения. Если эти решения нужны только AMD, а для других они бесполезны, есть ли смысл включать такие изменения в ядро?