ग्राफिक्स मानक Vulkan 1.2 प्रकाशित

क्रोनोस कन्सोर्टियम, जसले ग्राफिक्स मानकहरू विकास गर्दछ,
प्रकाशित विनिर्देशन वल्कन 1.2, определяющую API для доступа к графическим и вычислительным возможностям GPU. Новая спецификация вобрала в себя накопившиеся за два года исправления и विस्तार. Драйверы с поддержкой новой версии Vulkan уже जारी компании 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.

मुख्य नवाचारहरू:

  • Доведена до готовности к повсеместному применению реализация языка программирования шейдеров 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.

    ग्राफिक्स मानक Vulkan 1.2 प्रकाशित

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

    ग्राफिक्स मानक Vulkan 1.2 प्रकाशित

  • В основной API Vulkan включены 23 расширения, позволившие увеличить производительность, повысить качество визуализации и упростить разработку. Среди добавленных расширений:
    • Хронологические семафоры (Timeline semaphore), унифицирующие синхронизации c хостом и очередями устройств (позволяют обойтись одним примитивом для всенаправленной синхронизации между устройством и хостом, без применения раздельных примитивов VkFence и VkSemaphore). Новые семафоры представлены монотонно увеличивающимся 64-разрядным значением, которое можно отслеживать и обновлять в нескольких потоках.
      ग्राफिक्स मानक Vulkan 1.2 प्रकाशित

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

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

  • अपलोड गरिएको छ более 50 новых структур и 13 функций;
  • Подготовлены сокращённые варианты спецификации для типовых целевых платформ, упрощающие работу на платформах, для которых пока не поддерживаются все расширения, и позволяющие обойтись без выборочной активации базовых возможностей API Vulkan.
  • Продолжена работа над проектом по обеспечению переносимости с другими графическими API. Например, в Vulkan предложены расширения, позволяющие транслировать OpenGL (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) и DirectX (DXVK, vkd3d) через API Vulkan, а также, наоборот, для обеспечения работы Vulkan на платформах без его родной поддержки (gfx-rs и एशेस для работы поверх 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 उल्लेखनीय кардинальным упрощением драйверов, выносом генерации команд GPU на сторону приложения, возможностью подключения отладочных слоёв, унификацией API для различных платформ и применением предкомпилированного промежуточного представления кода для выполнения на стороне GPU. Для обеспечения высокой производительности и предсказуемости, Vulkan предоставляет приложениям средства для прямого управления операциями GPU и встроенную поддержку многопоточной обработки команд GPU, что минимизирует накладные расходы, вносимые драйвером, а реализуемые на стороне драйвера возможности заметно упрощаются и становятся более предсказуемыми. Например, такие операции, как управление памятью и обработка ошибок, реализуемые в OpenGL на стороне драйвера, в Vulkan вынесены на уровень приложения.

Vulkan ले सबै उपलब्ध प्लेटफर्महरू फैलाउँछ र डेस्कटप, मोबाइल र वेबको लागि एकल एपीआई प्रदान गर्दछ, एउटा साझा API धेरै GPU र अनुप्रयोगहरूमा प्रयोग गर्न अनुमति दिन्छ। Vulkan को बहु-तह वास्तुकलाको लागि धन्यवाद, जसको अर्थ कुनै पनि GPU सँग काम गर्ने उपकरणहरू, OEM हरूले कोड समीक्षा, डिबगिङ, र विकासको क्रममा प्रोफाइलिङका लागि उद्योग-मानक उपकरणहरू प्रयोग गर्न सक्छन्। शेडरहरू सिर्जना गर्नका लागि, नयाँ पोर्टेबल मध्यवर्ती प्रतिनिधित्व, SPIR-V, प्रस्ताव गरिएको छ, LLVM मा आधारित र OpenCL सँग कोर प्रविधिहरू साझेदारी गर्दै। यन्त्रहरू र स्क्रिनहरू नियन्त्रण गर्न, Vulkan ले WSI (Window System Integration) इन्टरफेस प्रदान गर्दछ, जसले लगभग OpenGL ES मा EGL जस्तै समस्याहरू समाधान गर्दछ। WSI समर्थन Wayland मा बक्स बाहिर उपलब्ध छ - Vulkan प्रयोग गर्ने सबै अनुप्रयोगहरू अपरिवर्तित Wayland सर्भरहरूको वातावरणमा चल्न सक्छन्। WSI मार्फत काम गर्ने क्षमता एन्ड्रोइड, X11 (DRI3 सँग), Windows, Tizen, macOS र iOS को लागि पनि प्रदान गरिएको छ।

स्रोत: opennet.ru

एक टिप्पणी थप्न