Graphics standard Vulkan 1.3 nai-publish

Pagkatapos ng dalawang taon ng trabaho, ang graphics standards consortium Khronos ay naglathala ng Vulkan 1.3 specification, na tumutukoy sa isang API para sa pag-access sa mga graphics at computing na kakayahan ng mga GPU. Ang bagong detalye ay nagsasama ng mga pagwawasto at mga extension na naipon sa loob ng dalawang taon. Napansin na ang mga kinakailangan ng detalye ng Vulkan 1.3 ay idinisenyo para sa OpenGL ES 3.1 class graphics equipment, na magtitiyak ng suporta para sa bagong graphics API sa lahat ng GPU na sumusuporta sa Vulkan 1.2. Ang mga tool ng Vulkan SDK ay binalak na mai-publish sa kalagitnaan ng Pebrero. Bilang karagdagan sa pangunahing detalye, pinlano itong mag-alok ng mga karagdagang extension para sa mid-range at high-end na mobile at desktop device, na susuportahan bilang bahagi ng "Vulkan Milestone" na edisyon.

Kasabay nito, iniharap ang isang plano upang ipatupad ang suporta para sa bagong detalye at karagdagang mga extension sa mga graphics card at driver ng device. Naghahanda ang Intel, AMD, ARM at NVIDIA na maglabas ng mga produkto na sumusuporta sa Vulkan 1.3. Halimbawa, inihayag ng AMD na malapit na nitong suportahan ang Vulkan 1.3 sa serye ng mga graphics card ng AMD Radeon RX Vega, gayundin sa lahat ng card batay sa arkitektura ng AMD RDNA. Naghahanda ang NVIDIA na mag-publish ng mga driver na may suporta para sa Vulkan 1.3 para sa Linux at Windows. Ang ARM ay magdaragdag ng suporta para sa Vulkan 1.3 sa mga Mali GPU.

Mga pangunahing inobasyon:

  • Naipatupad na ang suporta para sa mga pinasimpleng rendering pass (Streamlining Render Passes, VK_KHR_dynamic_rendering), na nagbibigay-daan sa iyong magsimulang mag-render nang hindi gumagawa ng mga rendering pass at framebuffer object.
  • Ang mga bagong extension ay idinagdag upang pasimplehin ang pamamahala ng graphics pipeline compilation (pipeline, isang hanay ng mga operasyon na ginagawang mga pixel na representasyon ang mga primitive at texture ng vector graphics).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - magdagdag ng mga karagdagang dynamic na estado upang bawasan ang bilang ng mga pinagsama-sama at naka-attach na mga bagay ng estado.
    • VK_EXT_pipeline_creation_cache_control - Nagbibigay ng mga advanced na kontrol sa kung kailan at paano pinagsama-sama ang mga pipeline.
    • VK_EXT_pipeline_creation_feedback - Nagbibigay ng impormasyon tungkol sa mga pinagsama-samang pipeline upang gawing mas madali ang pag-profile at pag-debug.
  • Ang ilang mga tampok ay inilipat mula sa opsyonal sa mandatory. Halimbawa, ang pagpapatupad ng mga buffer reference (VK_KHR_buffer_device_address) at ang Vulkan memory model, na tumutukoy kung paano maa-access ng magkasabay na mga thread ang nakabahaging data at mga operasyon ng pag-synchronize, ay mandatory na ngayon.
  • Ibinibigay ang pinong kontrol ng subgroup (VK_EXT_subgroup_size_control) upang makapagbigay ang mga vendor ng suporta para sa maraming laki ng subgroup at maaaring piliin ng mga developer ang laki na kailangan nila.
  • Ang extension ng VK_KHR_shader_integer_dot_product ay ibinigay, na magagamit para i-optimize ang performance ng mga machine learning frameworks salamat sa hardware acceleration ng mga dot product operations.
  • May kabuuang 23 bagong pagpapalawak ang kasama:
    • 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_formats
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_private_data
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Nagdagdag ng bagong uri ng object na VkPrivateDataSlot. 37 bagong utos at mahigit 60 istruktura ang ipinatupad.
  • Ang SPIR-V 1.6 na detalye ay na-update upang tukuyin ang isang intermediate shader representation na pangkalahatan para sa lahat ng mga platform at maaaring magamit para sa parehong mga graphics at parallel computing. Kasama sa SPIR-V ang paghihiwalay ng isang hiwalay na bahagi ng compilation ng shader sa isang intermediate na representasyon, na nagbibigay-daan sa iyong lumikha ng mga frontend para sa iba't ibang mga high-level na wika. Batay sa iba't ibang mataas na antas na pagpapatupad, ang isang solong intermediate code ay hiwalay na nabuo, na maaaring gamitin ng mga driver ng OpenGL, Vulkan at OpenCL nang hindi gumagamit ng built-in na shader compiler.
  • Ang konsepto ng mga profile sa pagiging tugma ay iminungkahi. Ang Google ang unang naglabas ng baseline na profile para sa Android platform, na magpapadali sa pagtukoy ng antas ng suporta para sa mga advanced na kakayahan ng Vulkan sa isang device na lampas sa pagtutukoy ng Vulkan 1.0. Para sa karamihan ng mga device, maaaring magbigay ng suporta sa profile nang hindi nag-i-install ng mga update sa OTA.

Alalahanin natin na ang Vulkan API ay kapansin-pansin para sa radikal nitong pagpapasimple ng mga driver, ang paglipat ng henerasyon ng mga utos ng GPU sa panig ng aplikasyon, ang kakayahang kumonekta sa mga debugging layer, ang pag-iisa ng API para sa iba't ibang mga platform at ang paggamit ng isang precompiled. intermediate na representasyon ng code para sa pagpapatupad sa gilid ng GPU. Para matiyak ang mataas na performance at predictability, nagbibigay ang Vulkan ng mga application na may direktang kontrol sa mga operasyon ng GPU at native na suporta para sa GPU multi-threading, na nagpapaliit sa overhead ng driver at ginagawang mas simple at mas predictable ang mga kakayahan sa gilid ng driver. Halimbawa, ang mga operasyon tulad ng pamamahala ng memorya at paghawak ng error, na ipinatupad sa OpenGL sa gilid ng driver, ay inililipat sa antas ng aplikasyon sa Vulkan.

Ang Vulkan ay sumasaklaw sa lahat ng magagamit na platform at nagbibigay ng isang API para sa desktop, mobile, at web, na nagpapahintulot sa isang karaniwang API na magamit sa maraming GPU at application. Salamat sa multi-layer architecture ng Vulkan, na nangangahulugang mga tool na gumagana sa anumang GPU, maaaring gumamit ang mga OEM ng mga tool na pamantayan sa industriya para sa pagsusuri ng code, pag-debug, at pag-profile sa panahon ng pag-develop. Para sa paglikha ng mga shader, isang bagong portable na intermediate na representasyon, ang SPIR-V, ay iminungkahi, batay sa LLVM at pagbabahagi ng mga pangunahing teknolohiya sa OpenCL. Para makontrol ang mga device at screen, nag-aalok ang Vulkan ng interface ng WSI (Window System Integration), na nilulutas ang humigit-kumulang kaparehong mga problema gaya ng EGL sa OpenGL ES. Ang suporta sa WSI ay magagamit sa labas ng kahon sa Wayland - lahat ng mga application na gumagamit ng Vulkan ay maaaring tumakbo sa isang kapaligiran ng hindi binagong mga server ng Wayland. Ang kakayahang magtrabaho sa pamamagitan ng WSI ay ibinibigay din para sa Android, X11 (na may DRI3), Windows, Tizen, macOS at iOS.

Pinagmulan: opennet.ru

Magdagdag ng komento