Консорциумът Khronos, занимаващ се с разработването на графични стандарти, публикува спецификацията Vulkan 1.2 с всички API за достъп до графичните и изчислителните възможности на графичните процесори. Новата спецификация събира на едно място натрупалите се за две години поправки и разширения. Драйвери с поддръжката на новата версия на 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.
Основни нововъведения в графичния стандарт Vulkan 1.2
- За повсеместно използване е вече готов езикът за програмиране на шейдъри HLSL, разработен от Microsoft за DirectX. Поддръжката на HLSL във Vulkan дава възможност за използването на един от HLSL шейдърите в приложенията с поддръжката на Vulkan и DirectX, като едновременно с това се опростява транслирането от HLSL към SPIR-V. За компилирането на шейдърите се предлага използването на компилатора DXC, който бе представен от Microsoft през 2017 година и се базира на LLVM технологията. Поддръжката на Vulkan е реализирана чрез отделен бекенд, който дава възможност за транслирането на HLSL в междинното представяне на шейдърите SPIR-V. Тази реализация обхваща всички вградени възможности на HLSL, включително математическите типове, потоците за управление, функциите, множествата, типовете ресурси, структурите и методите, както и използването на специфичните за Vulkan разширения, включително VKRay на Nvidia. В режима HLSL за Vulkan е реализрана работата на игрите Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey и Tomb Raider
- Обновена е спецификацията SPIR-V 1.5, определяща универсалното за всички платформи междинно представяне на шейдърите, което може да се използва както в графиката, така и при паралелните изчисления. Генерира се единен междинен код, който може да се използва от OpenGL, Vulkan и OpenCL драйверите без да се налага използването на вграден компилатор на шейдърите
- В основния API Vulkan са включени 23 разширения, позволяващи значително увеличаване на производителността, повишаване качеството на визуализацията и опростяване на разработването. Ето някои от тези разширения:
- Хронологични семафори (Timeline semaphore) унифициращи синхронизацията с хоста и стека от устройства
-
- Възможност за използване в шейдърите на числови типове с понижена точност
- Съвместим с HLSL вариант за използване на паметта
- Формален модел на паметта, който определя по какъв начин паралелно изпълняваните потоци могат да се обръщат към съвместно използваните данни и синхронизиращи операнди
- Буферни препратки и други
Пълният списък на добавените разширения:
-
- VK_KHR_8bit_storage
- VK_KHR_buffer_device_address
- VK_KHR_create_renderpass2
- VK_KHR_depth_stencil_resolve
- VK_KHR_draw_indirect_count
- VK_KHR_driver_properties
- VK_KHR_image_format_list
- VK_KHR_imageless_framebuffer
- VK_KHR_sampler_mirror_clamp_to_edge
- VK_KHR_separate_depth_stencil_layouts
- VK_KHR_shader_atomic_int64
- VK_KHR_shader_float16_int8
- VK_KHR_shader_float_controls
- VK_KHR_shader_subgroup_extended_types
- VK_KHR_spirv_1_4
- VK_KHR_timeline_semaphore
- VK_KHR_uniform_buffer_standard_layout
- VK_KHR_vulkan_memory_model
- VK_EXT_descriptor_indexing
- VK_EXT_host_query_reset
- VK_EXT_sampler_filter_minmax
- VK_EXT_scalar_block_layout
- VK_EXT_separate_stencil_usage
- VK_EXT_shader_viewport_index_layer
- Добавени са над 50 нови структури и 13 функции
- Подготвени са съкратени варианти на спецификациите за различните платформи
- Продължава работата върху осигуряването на прехвърляне към други графични API. Така например, Vulkan предлага разширения, даващи възможност за транслиране на OpenGL (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) и DirectX (DXVK, vkd3d) чрез API Vulkan, както и обратното – осигуряване работата на Vulkan върху платформи, които не поддържат тази технология (gfx-rs и Ashes за работа с OpenGL и DirectX, MoltenVK и gfx-rs за работа с Metal)
- Бъдещите планове включват представяне на разширения за машинно обучение, трасиране на лъчите, кодиране и декодиране на видео, поддръжка на VRS (variable-rate shading) и Mesh шейдъри
Да напомним, че API Vulkan е характерен преди всичко с кардиналното опростяване на драйверите, изнасянето на генериране на командите за графичния процесор в средата на приложенията, възможност за включване на нови програмни слоеве за дебъгване, унификация на API и всички API функции за всички платформи, използване на междинен код, който след компилиране се изпълнява от графичния процесор. За осигуряването на висока производителност и предсказуемост Vulkan предоставя на приложенията средства за директното управление на графичния процесор и вградена поддръжка на многопоточната обработка на командите от страна на GPU, което минимизира забавянето от страна на драйверите, като по този начин самите драйвери и техния код значително се опростяват. Така например, операциите като управление на паметта и обработването на грешките, които в OpenGL са реализирани в драйверите, при Vulkan са изнесени на ниво приложения.
Vulkan обхваща всички достъпни графични платформи и предоставя единен API за десктоп компютрите, мобилните системи и уеб приложенията, като осигурява един общ API за различните графични процесори и различните области в които тези чипове се използват. Благодарение на многослойната структура на Vulkan става възможно създаването на програмни инструменти, работещи с произволни GPU. По този начин производителите на най-разнообразен графичен хардуер могат да използват при разработването на своите продукти типови инструменти за проверка на кода, за дебъгване и профилиране.
За създаването на шейдърите се предлага тяхното ново междинно представяне SPIR-V, базирано на LLVM и използващо общи с OpenCL базови технологии. За управление на устройствата, екраните и програмните прозорци във Vulkan се предлага WSI (Window System Integration), решаващ приблизително същите задачи, като EGL в OpenGL ES. Директната поддръжка на WSI е реализирана във Wayland – всички приложения, използващи Vulkan, могат да бъдат стартирани в средата на немодифицирани сървъри Wayland. Възможността за работа чрез WSI е осигурена за Android, X11 (c DRI3), Windows, Tizen, macOS и iOS.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!


