AMD опубликовал код AMDGPU, с воплощением новой концепции построения графических драйверов

Разработчик Алекс Дойкер (Alex Deucher) из компании AMD представил новый драйвер «AMDGPU», ознаменовавший переход компании AMD к новой модели разработки драйверов для операционных систем на основе ядра Linux. О наличии подобных планов у компании сообщалось ранее. Теперь упомянутые планы получили воплощение в виде кода. Суть изменений сводится к тому, что драйвер Catalyst перестанет нуждаться в собственном модуле ядра и вместо этого станет пользоваться той же инфраструктурой, что и открытые драйверы, превратившись по сути в набор работающих в пространстве пользователя проприетарных библиотек с реализацией фирменных вариантов OpenGL, OpenCL и т.п.

В начальном варианте драйвера AMDGPU реализован компонент amdgpu.ko, работающий на уровне ядра Linux, DDX-драйвер xf86-video-amdgpu и плагин для библиотеки DRM libdrm_amdgpu. К сожалению, данный код ещё не проходил чистку и рецензирование разработчиками ядра Linux, поэтому ядерная часть драйвера не успеет войти в состав ядра Linux 4.1. Скорее всего этот код войдет в состав ядра Linux 4.2.

Со стороны Mesa, хотя для Gallium3D и представлен новый компонент winsys для AMDGPU, в конечном итоге, для новых GPU будет использоваться обычный драйвер RadeonSI, с незначительными модификациями, связанными с добавлением поддержки новых семейств GPU. Для генерации шейдеров для новых GPU минимальным требованием является LLVM 3.6, однако настойчиво рекомендуется использовать текущую версию LLVM 3.7 из svn, так как там исправлено множество ошибок и реализован ряд оптимизаций. Кроме этого потребуются обновленные бинарные файлы микрокода.

В данный момент с открытым стеком должна работать поддержка 3D-ускорения на уровне OpenGL 3.3, ускорение воспроизведения видео с использованием блоков UVD (через VDPAU), кодирование видео с использованием аппаратного блока кодирования видео VCE и т.п. Из очевидных ограничений нового драйвера отмечается отсутствие управления питанием для GPU семейства Tonga, что будет исправлено несколько позднее.

Кроме этого, новый драйвер в экспериментальном режиме может как минимум работать с GPU семейства Sea Islands. Эта возможность не поддерживается официально, но использовалась для раннего тестирования драйвера на уже существующем оборудовании с похожей архитектурой.

Дополнительно можно отметить открытие исходных текстов библиотеки Addrlib. Эта библиотека является частью драйвера Catalyst и используется для вычисления адресов и выравнивания текстур. Предполагается, что открытые драйвера также перейдут на использование этой библиотеки.

©  OpenNet