ΠΠΎΡΠ»Π΅ ΡΡΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ 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