Компания AMD открыла исходные тексты драйвера AMDVLK с полной реализацией графического API Vulkan 1.0. Драйвер поставлялся в составе проприетарного набора драйверов AMDGPU-PRO и конкурировал с изначально открытым Vulkan-драйвером RADV, развиваемым проектом Mesa. Код драйвера AMDVLK открыт под лицензией MIT.

Новый открытый драйвер реализован с использованием прослойки PAL (Platform Abstraction Library), предоставляющей унифицированный набор средств для доступа к оборудованию и низкоуровневым функциям операционной системы для упрощения построения различных драйверов для графических и вычислительных чипов AMD. PAL предоставляет уровень абстракции для поддержки различных платформ, включая недавно выпущенные GPU и инструменты разработки. Для взаимодействия с оборудованием PAL обращается к встроенному в ядро Linux DRM-модулю amdgpu, который также используется драйверами Mesa.

Ключевым компонентов драйвера является компонент 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 расширений Vulkan;
  • Возможность использованием системы трассировки 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;
  • Оптимизация LLPC для сокращения времени компиляции и увеличения производительности, упирающейся в возможности GPU;
  • Оптимизация производительности операций, выполняемых на CPU;

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here