Vulkan 1.3 grafik standarti chop etildi

Ikki yillik ishdan so'ng Khronos grafik standartlari konsorsiumi Vulkan 1.3 spetsifikatsiyasini e'lon qildi, bu esa grafik va grafik protsessorlarning hisoblash imkoniyatlariga kirish uchun APIni belgilaydi. Yangi spetsifikatsiya ikki yil davomida to'plangan tuzatishlar va kengaytmalarni o'z ichiga oladi. Ta'kidlanishicha, Vulkan 1.3 spetsifikatsiyasi talablari OpenGL ES 3.1 toifali grafik uskunalari uchun mo'ljallangan bo'lib, bu Vulkan 1.2 ni qo'llab-quvvatlaydigan barcha GPUlarda yangi grafik API-ni qo'llab-quvvatlashni ta'minlaydi. Vulkan SDK vositalari fevral oyi oΚ»rtalarida chop etilishi rejalashtirilgan. Asosiy spetsifikatsiyaga qo'shimcha ravishda, "Vulkan Milestone" nashri doirasida qo'llab-quvvatlanadigan o'rta va yuqori darajadagi mobil va ish stoli qurilmalari uchun qo'shimcha kengaytmalarni taklif qilish rejalashtirilgan.

Shu bilan birga, grafik kartalar va qurilma drayverlarida yangi spetsifikatsiya va qo'shimcha kengaytmalarni qo'llab-quvvatlashni amalga oshirish rejasi taqdim etiladi. Intel, AMD, ARM va NVIDIA Vulkan 1.3-ni qo'llab-quvvatlovchi mahsulotlarni chiqarishga tayyorlanmoqda. Masalan, AMD yaqinda Vulkan 1.3 ni AMD Radeon RX Vega seriyali grafik kartalarida, shuningdek, AMD RDNA arxitekturasiga asoslangan barcha kartalarda qoβ€˜llab-quvvatlashini e’lon qildi. NVIDIA Linux va Windows uchun Vulkan 1.3-ni qo'llab-quvvatlaydigan drayverlarni nashr etishga tayyorlanmoqda. ARM Mali GPU-lariga Vulkan 1.3-ni qo'llab-quvvatlaydi.

Asosiy innovatsiyalar:

  • Soddalashtirilgan renderlash o'tishlarini qo'llab-quvvatlash (Streamlining Render Passes, VK_KHR_dynamic_rendering) amalga oshirildi, bu sizga ko'rsatish o'tishlari va ramka buferi ob'ektlarini yaratmasdan ko'rsatishni boshlash imkonini beradi.
  • Grafik truboprovod kompilyatsiyasini boshqarishni soddalashtirish uchun yangi kengaytmalar qo'shildi (pipeline, vektor grafikasi ibtidoiy va teksturalarini piksel tasviriga aylantiruvchi operatsiyalar to'plami).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - kompilyatsiya qilingan va biriktirilgan holat ob'ektlari sonini kamaytirish uchun qo'shimcha dinamik holatlar qo'shing.
    • VK_EXT_pipeline_creation_cache_control - Quvurlar qachon va qanday kompilyatsiya qilinishi ustidan kengaytirilgan boshqaruvni ta'minlaydi.
    • VK_EXT_pipeline_creation_feedback - profil yaratish va disk raskadrovka qilishni osonlashtirish uchun kompilyatsiya qilingan quvurlar haqida ma'lumot beradi.
  • Bir qator funksiyalar ixtiyoriydan majburiyga oβ€˜tkazildi. Masalan, bufer havolalarini amalga oshirish (VK_KHR_buffer_device_address) va bir vaqtning o'zida ish zarralari umumiy ma'lumotlarga va sinxronizatsiya operatsiyalariga qanday kirishini belgilaydigan Vulkan xotira modeli endi majburiydir.
  • Sotuvchilar bir nechta kichik guruh o'lchamlarini qo'llab-quvvatlashi va ishlab chiquvchilar o'zlari talab qiladigan hajmni tanlashlari uchun nozik taneli kichik guruh boshqaruvi (VK_EXT_subgroup_size_control) taqdim etiladi.
  • VK_KHR_shader_integer_dot_product kengaytmasi taqdim etildi, undan nuqta mahsuloti operatsiyalarining apparat tezlashuvi tufayli mashinani o'rganish tizimi ish faoliyatini optimallashtirish uchun foydalanish mumkin.
  • Jami 23 ta yangi kengaytmalar kiritilgan:
    • VK_KHR_nusxalash_buyruqlari2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_xususiyati_bayroqlari2
    • VK_KHR_ta'mirlash4
    • VK_KHR_shader_integer_dot_mahsuloti
    • VK_KHR_shader_semantik bo'lmagan_ma'lumot
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_sinxronizatsiya2
    • VK_KHR_zero_initialize_workgroup_xotirasi
    • VK_EXT_4444_ formatlari
    • VK_EXT_xtatilgan_dinamik_stat
    • VK_EXT_kengaytirilgan_dinamik_holat2
    • VK_EXT_rasm_robustness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_maxfiy_ ma'lumotlar
    • VK_EXT_shader_demote_to_helper_inococation
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_hizalama
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formatlari
  • VkPrivateDataSlot yangi ob'ekt turi qo'shildi. 37 ta yangi buyruq va 60 dan ortiq tuzilmalar amalga oshirildi.
  • SPIR-V 1.6 spetsifikatsiyasi barcha platformalar uchun universal bo'lgan va grafik va parallel hisoblash uchun ishlatilishi mumkin bo'lgan oraliq shader tasvirini aniqlash uchun yangilandi. SPIR-V alohida shader kompilyatsiya bosqichini oraliq vakillikka ajratishni o'z ichiga oladi, bu sizga turli yuqori darajadagi tillar uchun frontendlarni yaratish imkonini beradi. Turli xil yuqori darajadagi ilovalar asosida alohida oraliq kod yaratiladi, undan OpenGL, Vulkan va OpenCL drayverlari o'rnatilgan shader kompilyatoridan foydalanmasdan foydalanishlari mumkin.
  • Muvofiqlik profillari tushunchasi taklif etiladi. Google birinchi bo'lib Android platformasi uchun bazaviy profilni chiqardi, bu Vulkan 1.0 spetsifikatsiyasidan tashqari qurilmada ilg'or Vulkan imkoniyatlarini qo'llab-quvvatlash darajasini aniqlashni osonlashtiradi. Aksariyat qurilmalar uchun OTA yangilanishlarini o'rnatmasdan profilni qo'llab-quvvatlash mumkin.

Eslatib o'tamiz, Vulkan API drayverlarni tubdan soddalashtirish, GPU buyruqlarini ishlab chiqarishni dastur tomoniga o'tkazish, disk raskadrovka qatlamlarini ulash qobiliyati, turli platformalar uchun APIni birlashtirish va oldindan tuzilgan dasturdan foydalanish bilan ajralib turadi. GPU tomonida bajarish uchun kodning oraliq vakili. Yuqori unumdorlik va prognozlilikni ta'minlash uchun Vulkan ilovalarni GPU operatsiyalarini to'g'ridan-to'g'ri boshqarish va GPU multi-threading uchun mahalliy qo'llab-quvvatlash bilan ta'minlaydi, bu esa drayverlarga qo'shimcha xarajatlarni kamaytiradi va haydovchi tomoni imkoniyatlarini ancha sodda va oldindan aytib bo'ladigan qiladi. Masalan, haydovchi tomonida OpenGL-da amalga oshirilgan xotirani boshqarish va xatolarni qayta ishlash kabi operatsiyalar Vulkandagi dastur darajasiga o'tkaziladi.

Vulkan barcha mavjud platformalarni qamrab oladi va ish stoli, mobil va veb uchun yagona API taqdim etadi, bu bitta umumiy APIni bir nechta GPU va ilovalarda ishlatishga imkon beradi. Vulkanning ko'p qatlamli arxitekturasi tufayli, ya'ni har qanday GPU bilan ishlaydigan vositalar, OEMlar ishlab chiqish jarayonida kodni ko'rib chiqish, disk raskadrovka va profil yaratish uchun sanoat standartidagi vositalardan foydalanishi mumkin. Sheyderlarni yaratish uchun LLVM va OpenCL bilan asosiy texnologiyalarni almashishga asoslangan yangi portativ oraliq vakillik, SPIR-V taklif etiladi. Qurilmalar va ekranlarni boshqarish uchun Vulkan WSI (Window System Integration) interfeysini taklif qiladi, bu OpenGL ES da EGL bilan bir xil muammolarni hal qiladi. WSI-ni qo'llab-quvvatlash Wayland-da mavjud - Vulkan-dan foydalanadigan barcha ilovalar o'zgartirilmagan Wayland serverlari muhitida ishlashi mumkin. WSI orqali ishlash imkoniyati Android, X11 (DRI3 bilan), Windows, Tizen, macOS va iOS uchun ham taqdim etilgan.

Manba: opennet.ru

a Izoh qo'shish