Veröffentlichung von Mesa 26.1, einer kostenlosen Implementierung von OpenGL und Vulkan

Nach dreimonatiger Entwicklungszeit wurde die Open-Source-Implementierung der OpenGL- und Vulkan-APIs, Mesa 26.1.0, veröffentlicht. Die erste Version des Mesa-26.1.0-Zweigs ist experimentell; sobald der Code vollständig stabil ist, wird die stabile Version 26.1.1 veröffentlicht.

Mesa 26.1 erweitert die ANV-Treiber für Intel-GPUs, RADV für AMD-GPUs, NVK für NVIDIA-GPUs, HoneyKrisp (hk) für Apple-GPUs, Turnip für Qualcomm-GPUs, PanVK für ARM-Mali-GPUs, den Lavapipe-Software-Rasterizer (lvp) und den Emulatormodus (vn) um Unterstützung für die Vulkan-1.4-Grafik-API. Die Treiber v3dv (Broadcom VideoCore GPU für Raspberry Pi 4+) und dzn (Vulkan über Direct3D 12) unterstützen Vulkan 1.0, der kk-Treiber (KosmicKrisp, Vulkan über Metal) Vulkan 1.1 und der pvr-Treiber (Imagination PowerVR GPU) Vulkan 1.2.

Mesa bietet außerdem vollständige OpenGL 4.6-Unterstützung für Iris (Intel Gen 8+ GPUs), Radeon Si (AMD), Crocus (ältere Intel Gen4-Gen7 GPUs), AMD (r600), Zink, llvmpipe, Virgl (virgil3D virtuelle GPU für QEMU/KVM), Freedreno (Qualcomm Adreno), d3d12 (OpenGL-Schicht über DirectX 12) und Asahi (AGX-GPU, die in Apple M1- und M2-Chips verwendet wird). OpenGL 4.5-Unterstützung ist für NVIDIA (nvc0) GPUs verfügbar. OpenGL 3.3-Unterstützung ist in den Treibern Softpipe (Software-Rasterizer) und NV50 (NVIDIA NV50) verfügbar. OpenGL 3 wird in den Treibern Panfrost (ARM Mali GPU) und V3.1D (Broadcom VideoCore GPU) unterstützt.

Wichtigste Neuerungen:

  • Treiber für Intel-GPUs (Iris, Crocus und ANV) unterstützen jetzt den direkten GPU-Zugriff aus virtuellen Maschinen über native Kontexte in VirtIO-GPU. Native Kontexte verbessern die Leistung bei der Arbeit mit einer virtuellen GPU (virtio-gpu-gl) in einem Gastsystem, indem sie Befehle direkt an die eigentliche Host-GPU senden.
  • Über den Zink-Treiber wurde die Unterstützung für OpenGL ES 2.0 für PowerVR-GPUs hinzugefügt, wodurch hardwarebeschleunigtes OpenGL auf Geräten ermöglicht wird, die die Vulkan-API unterstützen.
  • Der rusticl OpenCL-Treiber benötigt nun eine statisch verknüpfte C++-Standardbibliothek, um korrekt mit Anwendungen zu funktionieren, die native C++-Standardbibliotheken verwenden.
  • Der Radeonsi-Treiber (AMD) bietet nun Unterstützung für die OpenGL-Erweiterung GL_NV_timeline_semaphore.
  • Der Panfrost-Treiber (ARM Mali) unterstützt nun die OpenGL-Erweiterung GL_EXT_shader_image_load_store.
  • Der v3d-Treiber (Broadcom VideoCore) unterstützt nun die OpenGL-Erweiterung GL_ARB_sample_shading.
  • Unterstützung für Vulkan-Erweiterungen hinzugefügt:
    • VK_ARM_scheduling_controls für panvk
    • VK_EXT_acquire_drm_display für panvk
    • VK_EXT_astc_decode_mode für panvk
    • VK_EXT_attachment_feedback_loop_dynamic_state für panvk
    • VK_EXT_attachment_feedback_loop_layout für panvk
    • VK_EXT_blend_operation_advanced für Lavapipe
    • VK_EXT_color_write_enable für panvk
    • VK_EXT_conditional_rendering für panvk
    • VK_EXT_depth_clamp_control für panvk
    • VK_EXT_descriptor_heap für RADV (wenn 'export RADV_EXPERIMENTAL=heap' eingestellt ist)
    • VK_EXT_hdr_metadata für v3dv
    • VK_EXT_image_drm_format_modifier für pvr
    • VK_EXT_image_view_min_lod für panvk
    • VK_EXT_legacy_dithering für panvk
    • VK_EXT_map_memory_placed für panvk
    • VK_EXT_nested_command_buffer für panvk
    • VK_EXT_non_seamless_cube_map für pvr
    • VK_EXT_present_timing für RADV, NVK, Turnip, ANV, Honeykrisp, panvk
    • VK_EXT_primitive_restart_index für RADV
    • VK_EXT_rgba10x6_formats für panvk
    • VK_EXT_shader_atomic_float für panvk
    • VK_EXT_shader_stencil_export für panvk
    • VK_EXT_zero_initialize_device_memory für panvk
    • VK_KHR_copy_memory_indirect für nvk, RADV/GFX8+
    • VK_KHR_Geräteadressenbefehle für RADV
    • VK_{KHR,EXT}_{surface,swapchain}_maintenance1 für panvk
    • VK_KHR_get_display_properties2 für panvk
    • VK_KHR_get_surface_capabilities2 für panvk
    • VK_KHR_internally_synchronized_queues für RADV
    • VK_KHR_maintenance4 für PVR
    • VK_KHR_pipeline_executable_properties für pvr
    • VK_KHR_present_id für panvk, v3dv
    • VK_KHR_present_wait für panvk, v3dv
    • VK_KHR_sampler_ycbcr_conversion für pvr
    • VK_KHR_shader_integer_dot_product für pvr
    • VK_KHR_shader_untyped_pointers für panvk
    • VK_KHR_swapchain_mutable_format für panvk
    • VK_QCOM_image_processing für Turnip
    • VK_VALVE_mutable_descriptor_type für panvk
    • VK_VALVE_shader_mixed_float_dot_product für RADV (Vega20, Navi14, RDNA2+)
  • Implementierte OpenCL-Erweiterungen:
    • cl_khr_subgroup_ballot für asahi, iris, llvmpipe, radeonsi und zink
    • cl_xr_subgroup_clustered_reduce für asahi, llvmpipe, radeonsi und zink
    • cl_khr_subgroup_extended_types für asahi, iris, llvmpipe, radeonsi und zink
    • cl_khr_subgroup_non_uniform_arithmetic für asahi, llvmpipe, radeonsi und zink
    • cl_khr_subgroup_non_uniform_vote für asahi, iris, llvmpipe, radeonsi und zink
    • cl_khr_subgroup_rotate für asahi, llvmpipe und zink
  • Der VirGL-Treiber, der eine virtuelle GPU für QEMU implementiert, wird nicht mehr weiterentwickelt und wird entfernt, sofern sich niemand findet, der die Wartung übernimmt.

Source: opennet.ru