Апублікаваны графічны стандарт Vulkan 1.2

Кансорцыум Khronos, які займаецца распрацоўкай графічных стандартаў,
апублікаваў спецыфікацыю Vulkan 1.2, вызначальную API для доступу да графічных і вылічальных магчымасцяў GPU. Новая спецыфікацыя ўвабрала ў сябе назапашаныя за два гады выпраўлення і пашырэння. Драйверы з падтрымкай новай версіі Vulkan ужо выпусцілі кампаніі Intel, AMD, ARM, Imagination Technologies і NVIDIA. У Mesa падтрымка Vulkan 1.2 прапанавана для драйвераў РАДВ (карты 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), якія ўніфікуюць сінхранізацыі з хастом і чэргамі прылад (дазваляюць абыйсціся адным прымітывам для ўсёнакіраванай сінхранізацыі паміж прыладай і хастом, без ужывання паасобных прымітываў VkFence і VkSemaphore). Новыя семафоры прадстаўлены манатонна якое павялічваецца 64-разрадным значэннем, якое можна адсочваць і абнаўляць у некалькіх струменях.
      Апублікаваны графічны стандарт Vulkan 1.2

    • Магчымасць выкарыстання ў шэйдарах лікавых тыпаў з паніжанай дакладнасцю;
    • Сумяшчальны з HLSL варыянт раскладкі памяці;
    • Нязвязаныя рэсурсы (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, Расплаўлены ВК і 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.

З планаў на будучыню адзначаецца развіццё пашырэнняў для машыннага навучання, трасіроўкі прамянёў, кадаванні і дэкадаванні відэа, падтрымкі VRS (variable-rate shading) і Mesh-шэйдараў.

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

Vulkan ахоплівае ўсе даступныя платформы і дае адзіны API для настольных, мабільных сістэм і Web, дазваляючы выкарыстоўваць адзін агульны 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.

Крыніца: opennet.ru

Дадаць каментар