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

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

Π’ Mesa 21.2 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL 4.6 для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² 965, iris (Intel), radeonsi (AMD), zink ΠΈ llvmpipe. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL 4.5 доступна для GPU AMD (r600) ΠΈ NVIDIA (nvc0), Π° OpenGL 4.3 для virgl (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ GPU Virgil3D для QEMU/KVM). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Vulkan 1.2 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° для ΠΊΠ°Ρ€Ρ‚ Intel ΠΈ AMD, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ эмулятора (vn), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Vulkan 1.1 доступна для GPU Qualcomm ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ растСризатора lavapipe, Π° Vulkan 1.0 для GPU Broadcom VideoCore VI (Raspberry Pi 4).

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

  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ OpenGL-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ asahi с Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ графичСского процСссора, поставляСмого Π² Ρ‡ΠΈΠΏΠ°Ρ… Apple M1. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ интСрфСйс Gallium ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ возмоТностСй OpenGL 2.1 ΠΈ OpenGL ES 2.0, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для запуска Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΈΠ³Ρ€. Код Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° основан Π½Π° эталонном Gallium-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ noop с пСрСносом Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Panfrost, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ для GPU ARM Mali.
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ OpenGL-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Crocus с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ старых GPU Intel (Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Gen4-Gen7), Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ Iris. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° i965 Π½ΠΎΠ²Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ основан Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Gallium3D, выносящСй Π·Π°Π΄Π°Ρ‡ΠΈ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½Π° сторону DRI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π² ядрС Linux ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ состояний с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ кэша ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ PanVk, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ графичСского API Vulkan для GPU ARM Mali Midgard ΠΈ Bifrost. PanVk развиваСтся сотрудниками ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Collabora ΠΈ позиционируСтся ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Panfrost, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ OpenGL.
  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Panfrost для GPU Midgard (Mali T760 ΠΈ Π½ΠΎΠ²Π΅Π΅) ΠΈ GPU Bifrost (Mali G31, G52, G76) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL ES 3.1. Из Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠ»Π°Π½ΠΎΠ² отмСчаСтся ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Ρ‡ΠΈΠΏΠ°Ρ… Bifrost ΠΈ рСализация ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ GPU Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Valhall (Mali G77 ΠΈ Π½ΠΎΠ²Π΅Π΅).
  • Π’ 32-разрядных сборках для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86 вмСсто инструкций x87 для матСматичСских вычислСний задСйствованы инструкции sse2.
  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Nouveau nv50 для GPU NVIDIA GT21x (GeForce GT 2×0) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL ES 3.1.
  • Π’ Vulkan-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ TURNIP ΠΈ OpenGL-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Freedreno, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… для GPU Qualcomm Adreno, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° GPU Adreno a6xx gen4 (a660, a635).
  • Π’ Vulkan-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ RADV (AMD) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° отсСивания ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² (primitive culling) с использованиСм ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠΎΠ² NGG (Next-Gen Geometry). Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сборки Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° RADV Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows с использованиСм компилятора MSVC.
  • Π’ Vulkan-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ ANV (Intel) ΠΈ OpenGL-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Iris ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ грядущих Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ Intel Xe-HPG (DG2). Π’ Ρ‚ΠΎΠΌ числС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, связанныС с трассировкой Π»ΡƒΡ‡Π΅ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² для трассировки Π»ΡƒΡ‡Π΅ΠΉ.
  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ lavapipe с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ растСризатора для API Vulkan (Π°Π½Π°Π»ΠΎΠ³ llvmpipe, Π½ΠΎ для Vulkan, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API Vulkan Π² API Gallium) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌΠ° «wideLines» (обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π»ΠΈΠ½ΠΈΠΉ с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.0).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° динамичСского обнаруТСния ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… бэкСндов GBM (Generic Buffer Manager). ИзмСнСниС Π½Π°Ρ†Π΅Π»Π΅Π½ΠΎ Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Wayland Π½Π° систСмах с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ NVIDIA.
  • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Zink (рСализация API OpenGL ΠΏΠΎΠ²Π΅Ρ€Ρ… Vulkan, которая позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ ускорСнный OpenGL ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² систСмС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ API Vulkan) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_texture_filter_minmax ΠΈ GL_ARB_shader_clock. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° DRM (Direct Rendering Manager, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ VK_EXT_image_drm_format_modifier).
  • Π’ Vulkan-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ RADV (AMD), ANV (Intel) ΠΈ lavapipe Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:
    • VK_EXT_provoking_vertex (RADV);
    • VK_EXT_extended_dynamic_state2 (RADV);
    • VK_EXT_global_priority_query (RADV);
    • VK_EXT_physical_device_drm (RADV);
    • VK_KHR_shader_subgroup_uniform_control_flow (RADV, ANV);
    • VK_EXT_color_write_enable (RADV);
    • VK_EXT_acquire_drm_display (RADV, ANV);
    • VK_EXT_vertex_input_dynamic_state (lavapipe);
    • VK_EXT_line_rasterization (lavapipe);
    • VK_EXT_multi_draw (ANV, lavapipe, RADV);
    • VK_KHR_separate_depth_stencil_layouts (lavapipe);
    • VK_EXT_separate_stencil_usage (lavapipe);
    • VK_EXT_extended_dynamic_state2 (lavapipe).

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