Grafik standardı Vulkan 1.2 yayınlandı

Grafik standartları geliştiren Khronos konsorsiyumu,
опубликовал Şartname Vulkan 1.2, определяющую API для доступа к графическим и вычислительным возможностям GPU. Новая спецификация вобрала в себя накопившиеся за два года исправления и genişleme. Драйверы с поддержкой новой версии Vulkan уже yayınlandı компании Intel, AMD, ARM, Imagination Technologies и NVIDIA. В Mesa поддержка Vulkan 1.2 предложена для драйверов RADV (карты AMD) и ANV (Intel). Поддержка Vulkan 1.2 также реализована в отладчике RenderDoc 1.6, LunarG Vulkan SDK и наборе примеров Vulkan-Samples.

Ana yenilikler:

  • Доведена до готовности к повсеместному применению реализация языка программирования шейдеров HLSL, разработанного компанией Microsoft для DirectX. Поддержка HLSL в Vulkan даёт возможность использования одних HLSL-шейдеров в приложениях на базе Vulkan и DirectX, а также упрощает трансляцию из HLSL в SPIR-V. Для компиляции шейдеров предлагается использовать штатный компилятор
    DXC, который был открыт компанией Microsoft в 2017 году и базируется на технологии LLVM. Поддержка Vulkan реализована через отдельный бэкенд, позволяющий транслировать HLSL в промежуточное представление шейдеров SPIR-V. Реализация охватывает не только все встроенные возможности
    HLSL, включая математические типы, потоки управления, функции, множества, типы ресурсов, пространства имён, Shader Model 6.2, структуры и методы, но и позволяет использовать специфичные для Vulkan расширения, такие как VKRay от NVIDIA. В режиме HLSL поверх Vulkan удалось организовать работу таких игр, как Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey и Tomb Raider.

    Grafik standardı Vulkan 1.2 yayınlandı

  • Обновлена спецификация SPIR-V 1.5, определяющая универсальное для всех платформ промежуточное представление шейдеров, которое может применяться как для графики, так и для параллельных вычислений.
    SPIR-V подразумевает выделение отдельной фазы компиляции шейдеров в промежуточное представление, что позволяет создавать фронтэнды для различных высокоуровневых языков. На основе различных высокоуровневых реализаций отдельно генерируется единый промежуточный код, который может использоваться драйверами OpenGL, Vulkan и OpenCL без применения встроенного компилятора шейдеров.

    Grafik standardı Vulkan 1.2 yayınlandı

  • В основной API Vulkan включены 23 расширения, позволившие увеличить производительность, повысить качество визуализации и упростить разработку. Среди добавленных расширений:
    • Хронологические семафоры (Timeline semaphore), унифицирующие синхронизации c хостом и очередями устройств (позволяют обойтись одним примитивом для всенаправленной синхронизации между устройством и хостом, без применения раздельных примитивов VkFence и VkSemaphore). Новые семафоры представлены монотонно увеличивающимся 64-разрядным значением, которое можно отслеживать и обновлять в нескольких потоках.
      Grafik standardı Vulkan 1.2 yayınlandı

    • Возможность использования в шейдерах числовых типов с пониженной точностью;
    • Совместимый с HLSL вариант раскладки памяти;
    • Несвязанные ресурcы (bindless), снимающие ограничение на число доступных для шейдеров ресурсов за счёт использования общего виртуального пространства системной памяти и памяти GPU;
    • Формальная модель памяти, определяющая как параллельно выполняемые потоки могут обращаться к совместно используемым данным и операциям синхронизации;
    • Индексация дескрипторов для повторного использования дескрипторов раскладок в нескольких шейдерах;
    • Буферные ссылки.

    Полный список добавленных расширений:

  • Katma более 50 новых структур и 13 функций;
  • Подготовлены сокращённые варианты спецификации для типовых целевых платформ, упрощающие работу на платформах, для которых пока не поддерживаются все расширения, и позволяющие обойтись без выборочной активации базовых возможностей API Vulkan.
  • Продолжена работа над проектом по обеспечению переносимости с другими графическими API. Например, в Vulkan предложены расширения, позволяющие транслировать OpenGL (Çinko), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) и DirectX (DXVK, vkd3d) через API Vulkan, а также, наоборот, для обеспечения работы Vulkan на платформах без его родной поддержки (gfx-rs и Küller для работы поверх OpenGL и DirectX, MoltenVK и gfx-rs для работы поверх Metal).
    Для улучшения совместимости с DirectX и HLSL добавлены расширения
    VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layou, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, а также в SPIR-V реализованы специфичные возможности HLSL.

Из планов на будущее отмечается развитие расширений для машинного обучения, трассировки лучей, кодирования и декодирования видео, поддержки VRS (variable-rate shading) и Mesh-шейдеров.

Напомним, что API Vulkan dikkat çekici кардинальным упрощением драйверов, выносом генерации команд GPU на сторону приложения, возможностью подключения отладочных слоёв, унификацией API для различных платформ и применением предкомпилированного промежуточного представления кода для выполнения на стороне GPU. Для обеспечения высокой производительности и предсказуемости, Vulkan предоставляет приложениям средства для прямого управления операциями GPU и встроенную поддержку многопоточной обработки команд GPU, что минимизирует накладные расходы, вносимые драйвером, а реализуемые на стороне драйвера возможности заметно упрощаются и становятся более предсказуемыми. Например, такие операции, как управление памятью и обработка ошибок, реализуемые в OpenGL на стороне драйвера, в Vulkan вынесены на уровень приложения.

Vulkan mevcut tüm platformları kapsar ve masaüstü, mobil ve web için tek bir API sağlayarak birden fazla GPU ve uygulamada ortak bir API'nin kullanılmasına olanak tanır. Vulkan'ın herhangi bir GPU ile çalışan araçlar anlamına gelen çok katmanlı mimarisi sayesinde OEM'ler, geliştirme sırasında kod inceleme, hata ayıklama ve profil oluşturma için endüstri standardı araçları kullanabilir. Gölgelendiriciler oluşturmak için, LLVM'ye dayanan ve temel teknolojileri OpenCL ile paylaşan yeni bir taşınabilir ara temsil olan SPIR-V önerilmektedir. Cihazları ve ekranları kontrol etmek için Vulkan, OpenGL ES'deki EGL ile yaklaşık olarak aynı sorunları çözen WSI (Pencere Sistemi Entegrasyonu) arayüzünü sunar. WSI desteği Wayland'de kullanıma hazırdır; Vulkan'ı kullanan tüm uygulamalar, değiştirilmemiş Wayland sunucularından oluşan bir ortamda çalışabilir. WSI aracılığıyla çalışma yeteneği ayrıca Android, X11 (DRI3 ile), Windows, Tizen, macOS ve iOS için de sağlanmaktadır.

Kaynak: opennet.ru

Yorum ekle