Graphics standard Vulkan 1.2 nai-publish

Ang Khronos consortium, na bumubuo ng mga pamantayan ng graphics,
lathala pagtutukoy Vulkan 1.2, na tumutukoy sa isang API para sa pag-access sa mga graphic at computing na kakayahan ng GPU. Ang bagong detalye ay nagsasama ng mga pagwawasto na naipon sa loob ng dalawang taon at pagpapalawak. Ang mga driver na sumusuporta sa bagong bersyon ng Vulkan ay mayroon na pinakawalan kumpanya ng Intel, AMD, ARM, Imagination Technologies at NVIDIA. Nag-aalok ang Mesa ng suporta sa Vulkan 1.2 para sa mga driver RADV (AMD card) at anv (Intel). Ang suporta sa Vulkan 1.2 ay ipinatupad din sa debugger RenderDoc 1.6, LunarG Vulkan SDK at isang hanay ng mga halimbawa Mga Vulkan-Sample.

Ang pangunahing mga inobasyon:

  • Dinala sa iyo pagpapatupad ng isang shader programming language hanggang handa na para sa malawakang paggamit HLSL, na binuo ng Microsoft para sa DirectX. Ginagawang posible ng suporta ng HLSL sa Vulkan na gamitin ang parehong mga shader ng HLSL sa mga application batay sa Vulkan at DirectX, at pinapasimple rin ang pagsasalin mula HLSL hanggang SPIR-V. Upang mag-compile ng mga shader, iminumungkahi na gumamit ng isang karaniwang compiler
    DXC, na binuksan ng Microsoft noong 2017 at nakabatay sa teknolohiya ng LLVM. Ang suporta sa Vulkan ay ipinatupad sa pamamagitan ng isang hiwalay na backend, na nagbibigay-daan sa iyong isalin ang HLSL sa isang intermediate na representasyon ng mga SPIR-V shader. Ang pagpapatupad ay sumasaklaw hindi lamang sa lahat ng mga built-in na kakayahan
    Ang HLSL, kabilang ang mga uri ng matematika, mga daloy ng kontrol, mga function, set, mga uri ng mapagkukunan, mga namespace, Shader Model 6.2, mga istruktura at pamamaraan, ngunit pinapayagan din ang paggamit ng mga extension na partikular sa Vulkan gaya ng VKRay mula sa NVIDIA. Sa HLSL mode sa tuktok ng Vulkan, posible na ayusin ang gawain ng mga laro tulad ng Destiny 2, Red Dead Redemption II, Assassin's Creed Odyssey at Tomb Raider.

    Graphics standard Vulkan 1.2 nai-publish

  • Na-update ang detalye SPIR-V 1.5, na tumutukoy sa isang intermediate na representasyon ng mga shader 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 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.

    Graphics standard Vulkan 1.2 nai-publish

  • Ang pangunahing Vulkan API ay may kasamang 23 extension na nagpapataas ng performance, nagpapahusay sa kalidad ng pag-render, at nagpapasimple ng development. Kabilang sa mga idinagdag na extension:
    • Mga kronolohikal na semaphore (Timeline semaphore), pinag-iisa ang pag-synchronise sa host at mga queue ng device (nagbibigay-daan sa iyong gumamit ng isang primitive para sa omnidirectional na pag-synchronize sa pagitan ng device at ng host, nang hindi gumagamit ng hiwalay na VkFence at VkSemaphore primitives). Ang mga bagong semaphore ay kinakatawan ng isang monotonically pagtaas ng 64-bit na halaga na maaaring masubaybayan at ma-update sa maraming mga thread.
      Graphics standard Vulkan 1.2 nai-publish

    • Kakayahang gumamit ng mga numeric na uri na may pinababang katumpakan sa mga shader;
    • HLSL compatible memory layout opsyon;
    • Mga hindi nakatali na mapagkukunan (walang bindless), na nag-aalis ng limitasyon sa bilang ng mga mapagkukunang magagamit sa mga shader sa pamamagitan ng paggamit ng nakabahaging virtual na espasyo ng memorya ng system at memorya ng GPU;
    • Pormal na modelo ng memorya, na tumutukoy kung paano maa-access ng magkasabay na mga thread ang nakabahaging data at mga pagpapatakbo ng pag-synchronize;
    • Pag-index ng deskriptor upang muling gamitin ang mga deskriptor ng layout sa maraming shader;
    • Mga link sa buffer.

    Buong listahan ng mga idinagdag na extension:

  • Idinagdag higit sa 50 bagong istruktura at 13 function;
  • Ang mga pinaikling bersyon ng detalye ay inihanda para sa mga karaniwang target na platform, pinapasimple ang trabaho sa mga platform kung saan ang lahat ng mga extension ay hindi pa suportado, at pinapayagan ang isa na gawin nang walang piling pag-activate ng mga pangunahing kakayahan ng Vulkan API.
  • Patuloy ang trabaho sa proyekto upang matiyak ang portability sa iba pang mga graphics API. Halimbawa, nag-aalok ang Vulkan ng mga extension na nagpapahintulot sa pagsasalin ng OpenGL (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) at DirectX (DXVK, vkd3d) sa pamamagitan ng Vulkan API, at gayundin, sa kabaligtaran, upang paganahin ang Vulkan na magtrabaho sa mga platform nang walang katutubong suporta nito (gfx-rs ΠΈ Ashes para sa pagtatrabaho sa itaas ng OpenGL at DirectX, MoltenVK at gfx-rs para magtrabaho sa ibabaw ng Metal).
    Nagdagdag ng mga extension upang mapabuti ang pagiging tugma sa DirectX at HLSL
    VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, at SPIR-V ay nagpapatupad ng mga partikular na kakayahan sa HLSL.

Kasama sa mga plano para sa hinaharap ang pagbuo ng mga extension para sa machine learning, ray tracing, video encoding at decoding, suporta para sa VRS (variable-rate shading) at Mesh shaders.

Alalahanin na ang Vulkan API kapansin-pansin radikal na pagpapasimple ng mga driver, paglipat ng henerasyon ng mga utos ng GPU sa bahagi ng aplikasyon, ang kakayahang kumonekta sa mga debugging layer, 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