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

Пасля двух гадоў працы кансорцыўм Khronos, які займаецца распрацоўкай графічных стандартаў, апублікаваў спецыфікацыю Vulkan 1.3, вызначальную API для доступу да графічных і вылічальных магчымасцяў GPU. Новая спецыфікацыя ўвабрала ў сябе выпраўленні і пашырэнні, якія назапасіліся за два гады. Адзначаецца, што патрабаванні спецыфікацыі Vulkan 1.3 разлічаны на графічнае абсталяванне класа OpenGL ES 3.1, што дазволіць забяспечыць падтрымку новага графічнага API ва ўсіх GPU, якія падтрымліваюць Vulkan 1.2. Інструментарый Vulkan SDK плануюць апублікаваць у сярэдзіне лютага. Акрамя асноўнай спецыфікацыі плануецца прапанаваць дадатковыя пашырэнні для мабільных і настольных прылад сярэдняга і вышэйшага звяна, падтрымка якіх будзе ажыццяўляцца ў рамках рэдакцыі "Vulkan Milestone".

Адначасова прадстаўлены план рэалізацыі падтрымкі новай спецыфікацыі і дадатковых пашырэнняў у графічных поплатках і драйверах прылад. Прадукты з падтрымкай Vulkan 1.3 рыхтуюцца выпусціць кампаніі Intel, AMD, ARM і NVIDIA. Напрыклад, кампанія AMD заявіла аб хуткім забеспячэнні падтрымкі Vulkan 1.3 у серыі графічных карт AMD Radeon RX Vega, а таксама ва ўсіх картах на базе архітэктуры AMD RDNA. Кампанія NVIDIA рыхтуецца апублікаваць драйверы з падтрымкай Vulkan 1.3 для Linux і Windows. Кампанія ARM дадасць падтрымку Vulkan 1.3 у GPU Mali.

Асноўныя навіны:

  • Рэалізаваная падтрымка спрошчаных праходаў адмалёўкі (Streamlining Render Passes, VK_KHR_dynamic_rendering), якія дазваляюць пачаць адмалёўку без стварэння праходаў адмалёўкі і аб'ектаў фрэймбуфера.
  • Дададзены новыя пашырэнні для спрашчэння кіравання кампіляцыяй графічнага канвеера (pipeline, набор аперацый, які ператварае вектарныя графічныя прымітывы і тэкстуры ў піксельнае ўяўленне).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - дадаюць дадатковыя дынамічныя станы для скарачэння колькасці кампіляваных і якія прымацоўваюцца аб'ектаў стану.
    • VK_EXT_pipeline_creation_cache_control - дае пашыраныя прылады кіравання тым, калі і як кампіляваць канвееры.
    • VK_EXT_pipeline_creation_feedback - дае інфармацыю аб скампіляваных канвеерах для спрашчэння прафілявання і адладкі.
  • Шэраг магчымасцяў пераведзены з апцыянальных у абавязковыя. Напрыклад, абавязковымі зараз з'яўляецца рэалізацыя буферных спасылак (VK_KHR_buffer_device_address) і мадэлі памяці Vulkan, вызначальнай як раўналежна выкананыя струмені могуць звяртацца да сумесна выкарыстоўваных дадзеных і аперацыям сінхранізацыі.
  • Прадастаўлены сродкі дакладнага кіравання падгрупамі (VK_EXT_subgroup_size_control), пры дапамозе якіх вытворцы могуць прадастаўляць падтрымку некалькіх памераў падгруп, а распрацоўшчыкі выбіраць патрабаваны памер.
  • Прадастаўлена пашырэнне VK_KHR_shader_integer_dot_product, якое можна выкарыстоўваць для аптымізацыі працы фрэймворкаў машыннага навучання, дзякуючы апаратнаму паскарэнню аперацый cкалярнага твора.
  • Усяго ў склад уключаны 23 новыя пашырэнні:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronization2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_форматы
    • VK_EXT_пашыраны_дынамічны_стан
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_малюнак_надзейны
    • VK_EXT_inline_uniform_block
    • Кантроль VK_EXT_трубаправода_тварэння_каш_
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_приватные_данные
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_падгрупа_кантроль
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Дададзены новы тып аб'ектаў VkPrivateDataSlot. Рэалізавана 37 новых каманд і больш за 60 структур.
  • Абноўлена спецыфікацыя SPIR-V 1.6, якая вызначае ўніверсальнае для ўсіх платформаў прамежкавае ўяўленне шэйдараў, якое можа прымяняцца як для графікі, так і для паралельных вылічэнняў. SPIR-V мае на ўвазе вылучэнне асобнай фазы кампіляцыі шэйдараў у прамежкавае ўяўленне, што дазваляе ствараць фронтэнды для розных высокаўзроўневых моў. На аснове розных высокаўзроўневых рэалізацый асобна генеруецца адзіны прамежкавы код, які можа выкарыстоўвацца драйверамі OpenGL, Vulkan і OpenCL без ужывання ўбудаванага кампілятара шэйдараў.
  • Прапанавана канцэпцыя профіляў сумяшчальнасці. Першым кампаніяй Google падрыхтаваны базавы профіль (baseline profile) для платформы Android, які спросціць вызначэнне на прыладзе ўзроўню падтрымкі пашыраных магчымасцяў Vulkan, якія выходзяць за рамкі спецыфікацыі Vulkan 1.0. Для большасці прылад падтрымка профіля зможа быць забяспечана без усталёўкі OTA-абнаўленняў.

Нагадаем, што 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

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