Компания AMD открыла (https://lists.freedesktop.org/archives/amd-gfx/2017-December...) исходные тексты драйвера AMDVLK (https://github.com/GPUOpen-Drivers/AMDVLK) с полной реализацией графического API Vulkan 1.0 (https://www.opennet.ru/opennews/art.shtml?num=43887). Драйвер поставлялся в составе проприетарного набора драйверов AMDGPU-PRO и конкурировал с изначально открытым Vulkan-драйвером RADV, развиваемым проектом Mesa. Код драйвера AMDVLK открыт (https://github.com/GPUOpen-Drivers/) под лицензией MIT.
Новый открытый драйвер реализован с использованием прослойки PAL (https://github.com/GPUOpen-Drivers/pal) (Platform Abstraction Library), предоставляющей унифицированный набор средств для доступа к оборудованию и низкоуровневым функциям операционной системы для упрощения построения различных драйверов для графических и вычислительных чипов AMD. PAL предоставляет уровень абстракции для поддержки различных платформ, включая недавно выпущенные GPU и инструменты разработки. Для взаимодействия с оборудованием PAL обращается к встроенному в ядро Linux DRM-модулю amdgpu, который также используется драйверами Mesa.
Ключевым компонентов драйвера является компонент XGL (https://github.com/GPUOpen-Drivers/xgl) (Vulkan API Layer), который занимается трансляцией команд API Vulkan универсальные команды прослойки PAL, которые затем могут быть переданы для обработки в GPU. Для компиляции шейдеров применяется основанный на наработках проекта LLVM компилятор LLPC (LLVM Pipeline Compiler), который генерирует на выходе объекты VkPipeline, совместимые с ABI PAL. LLPC объединяет в себе три компонента: транслятор промежуточного представления шейдеров SPIR-V в LLVM IR с дополнительными метаданными. компонент Lower для трансляции полученного промежуточного кода LLVM IR в вызовы функций и компонент Patcher для замены всех внешних вызовов функций на вызовы, соответствующие PAL Pipeline ABI.
Основные возможности драйвера:
- Поддержка Vulkan 1.0 и более 30 расширений;
- Возможность использованием системы трассировки Radeon GPUProfiler (https://github.com/GPUOpen-Tools/Radeon-GPUProfiler);
- Встроенные инструменты для отладки и профилирования;
- Упреждающий разбор буфера промежуточных команд и виртуализация SR-IOV;
- Поддержка серий GPU:
- Radeon HD 7000
- Radeon HD 8000M
- Radeon R5/R7/R9 200/300
- Radeon RX 400/500
- Radeon M200/M300/M400
- Radeon RX Vega
- AMD FirePro Workstation Wx000/Wx100/Wx300
- Radeon Pro WX x100
- Radeon Pro 400/500
Запланированные на будущее возможности:
- Поддержка находящихся в разработке спецификаций Vulkan API;
- Использование аппаратных счётчиков производительности для сбора информации через RenderDoc (https://renderdoc.org/);
- Оптимизация LLPC для сокращения времени компиляции и увеличения производительности, упирающейся в возможности GPU;
- Оптимизация производительности операций, выполняемых на CPU;
URL: https://lists.freedesktop.org/archives/amd-gfx/2017-December...
Новость: http://www.opennet.ru/opennews/art.shtml?num=47816