Компания AMD открыла код драйвера с реализацией API Vulkan

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

Новый открытый драйвер реализован с использованием прослойки PAL (Platform Abstraction Library), предоставляющей унифицированный набор средств для доступа к оборудованию и низкоуровневым функциям операционной системы. Прослойка применяется в драйверах AMDGPU-PRO для Linux и Windows и создана для абстрагирования взаимодействия высокоуровневого драйвера с операционными системами, 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;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.