Это очередной шаг в долгосрочной работе Valve по переводу устаревших GPU с драйвера Radeon на современный AMDGPU. Ранее, в рамках этой же инициативы, была улучшена поддержка дисплеев для старых APU, выполнен переход графических процессоров архитектуры GCN 1.0/1.1 на новый драйвер, а также исправлено множество ошибок и проведены оптимизации. Теперь, была представлена реализация поддержки DRM-модификаторов формата.
Источник изображения: phoronix.com
Нововведение охватывает очень широкий круг оборудования: от первых дискретных видеокарт на базе GCN 1.0 (серия Radeon HD 7000) до более поздних чипов на архитектурах GCN 2.0, 3.0 и 4.0, включая популярные линейки Radeon R9 200/300, Fury и Polaris (RX 400). До настоящего момента именно эти графические процессоры, будучи самыми возрастными из поддерживаемых драйвером AMDGPU, оставались без данной возможности.
DRM-модификаторы формата — это 64-битные числовые идентификаторы, которые явно описывают, как буфер изображения размещается в памяти: схему тайлинга, тип сжатия и другие параметры. В старых GPU графический блок (GFX) способен использовать только фиксированный набор режимов тайлинга, задаваемых ядром по специальной таблице. Новые идентификаторы как раз и кодируют все необходимые для этого детали.
В зависимости от конкретной схемы размещения это может обеспечить как рост производительности, так и более гибкие сценарии использования. Сама же поддержка открывает дорогу для множества вещей в графической экосистеме Linux, которые раньше на этих GPU либо не работали вовсе, либо требовали обходных путей. В пояснительном письме к патчам разработчик отдельно упоминает, что среди прочего это композиторы, написанные на Vulkan (например, Gamescope), композиторы, работающие поверх прослойки Zink (OpenGL поверх Vulkan), а также прямое взаимодействие между разными API — такими как VA-API, OpenGL и Vulkan.
Помимо изменений для ядерного драйвера AMDGPU, также подготовлен запрос на включение кода в Mesa. Он реализует поддержку DRM-модификаторов формата со стороны пользовательского пространства в драйверах RADV и RadeonSI.

