Π Π΅Π»ΠΈΠ· Mesa 22.3, свободной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ OpenGL ΠΈ Vulkan

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· свободной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ API OpenGL ΠΈ Vulkan — Mesa 22.3.0. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск Π²Π΅Ρ‚ΠΊΠΈ Mesa 22.3.0 ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ статус — послС провСдСния ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стабилизации ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия 22.3.1.

Π’ Mesa 22.3 доступна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° графичСского API Vulkan 1.3 Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… anv для GPU Intel, radv для GPU AMD, tu для GPU Qualcomm ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ эмулятора (vn). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Vulkan 1.1 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ растСризаторС lavapipe (lvp), Π° Vulkan 1.0 Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ v3dv (GPU Broadcom VideoCore VI ΠΈΠ· Raspberry Pi 4).

Π’ Mesa Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСтся полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL 4.6 для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² 965, iris (Intel), radeonsi (AMD), zink ΠΈ llvmpipe. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL 4.5 доступна для GPU AMD (r600), NVIDIA (nvc0) ΠΈ Qualcomm Adreno (freedreno), OpenGL 4.3 для virgl (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ GPU Virgil3D для QEMU/KVM), Π° OpenGL 4.2 для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° d3d12 (прослойка для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ OpenGL ΠΏΠΎΠ²Π΅Ρ€Ρ… DirectX 12).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ freedreno для GPU Qualcomm Adreno обСспСчСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° графичСского API OpenGL 4.5, Π° Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ для эмулятора (vn) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° API Vulkan 1.3.
  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Panfrost Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Π½Π° дискС ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GPU Mali T620. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ совмСстим со спСцификациСй OpenGL 3.1 ΠΈ OpenGL ES 3.1.
  • Π’ Vulkan-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ RADV (AMD) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GPU GFX11/RDNA3 (сСрия Radeon RX 7000). ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΊΠΎΠ΄Π° для трассировки Π»ΡƒΡ‡Π΅ΠΉ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² R8G8B8, B8G8R8 ΠΈ R16G16B16, Π° Ρ‚Π°ΠΊΠΆΠ΅ 64-разрядных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„Π»Π°Π³Π° extendedDynamicState2PatchControlPoints, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ VK_EXT_extended_dynamic_state2. Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Radeon Raytracing Analyzer.
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Rusticl с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ спСцификации OpenCL 3.0, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ API ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка Π‘ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ написан Π½Π° языкС Rust, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с использованиСм прСдоставляСмого Π² Mesa интСрфСйса Gallium ΠΈ выступаСт Π² Ρ€ΠΎΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π² Mesa OpenCL-фронтэнда Clover. Clover ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ находится Π² Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΌ состоянии ΠΈ rusticl позиционируСтся ΠΊΠ°ΠΊ Π΅Π³ΠΎ будущая Π·Π°ΠΌΠ΅Π½Π°. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Rust ΠΈ rusticl ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сборки с явным ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ†ΠΈΠΉ «-D gallium-rusticl=true -Dllvm=enabled -Drust_std=2021». ΠŸΡ€ΠΈ сборкС Π² качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ компилятор rustc, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ привязок bindgen, LLVM, инструмСнтарий SPIRV-Tools ΠΈ транслятор SPIRV-LLVM-Translator.
  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ RadeonSI Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ отрисовки Ρ‡Π΅Ρ€Π΅Π· OpenGL.
  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Mesa-DB, Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ кэша ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ², ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ OpenGL:
    • GL_ARB_shader_clock для llvmpipe.
    • GL_KHR_blend_equation_advanced_coherent для zink.
    • GL_NV_shader_atomic_float для llvmpipe.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Vulkan-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:
    • VK_KHR_shader_clock для lavapipe.
    • VK_EXT_attachment_feedback_loop_layout для RADV, lavapipe.
    • VK_KHR_global_priority для RADV.
    • VK_EXT_load_store_op_none для RADV.
    • VK_EXT_mutable_descriptor_type для RADV.
    • VK_EXT_shader_atomic_float для lvp.
    • VK_EXT_shader_atomic_float2 для lvp.
    • VK_EXT_image_robustness для v3dv.
    • VK_EXT_extended_dynamic_state3 для lavapipe, RADV ΠΈ ANV.
    • VK_EXT_extended_dynamic_state2 для RADV.
    • VK_EXT_pipeline_robustness для v3dv.
    • VK_EXT_mesh_shader для ANV.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ