發布 Mesa 26.1,免費實施 OpenGL 和 Vulkan

經過三個月的開發,開源的 OpenGL 和 Vulkan API 實作 Mesa 26.1.0 正式發布。 Mesa 26.1.0 分支的首個版本為實驗版本;待程式碼完全穩定後,將發布穩定版本 26.1.1。

Mesa 26.1 為 Intel GPU 的 ANV 驅動程式、AMD GPU 的 RADV 驅動程式、NVIDIA GPU 的 NVK 驅動程式、Apple GPU 的 HoneyKrisp (hk) 驅動程式、Qualcomm GPU 的 Turnip 驅動程式、ARM Mali GPU 的 PanlavVK 驅動程式、pipepipe 軟體程式設計程式 (pipen) 軟體的光化模式Vulkan 1.4 圖形 API 的支援。 v3dv(適用於 Raspberry Pi 4+ 的 Broadcom VideoCore GPU)和 dzn(適用於 Raspberry Pi 4+ 的 Broadcom VideoCore GPU)和 dzn(適用於 Raspberry Pi 4+ 的 Broadcom VideoCore GPU)和 dzn(適用於 Raspberry Pi 4+ 的 Broadcom VideoCore GPU)和 dzn(基於 Direct3D 12 的 Vulkan)驅動程式支援 Vulkan 1.0,kk 驅動程式(KosmicKrisp,基於 Metal 的 Vulkan)支援 Vulkan 1.1,pvr 驅動程式(Iinkanside)支援 Vulkan。

Mesa 也為 iris(英特爾第八代及以上 GPU)、radeonsi(AMD)、Crocus(舊款英特爾第四代至第七代 GPU)、AMD(r4.6)、zink、llvmpipe、virgl(用於 QEMU/KVM 的 virgil8D 虛擬 GPU)、freedreno(高通、4、D asahi(蘋果 M7 和 M600 晶片中使用的 AGX GPU)提供完整的 OpenGL 3 支援。 NVIDIA(nvc3)GPU 提供 OpenGL 12 支援。 softpipe(軟體光柵化器)和 nv12(NVIDIA NV1)驅動程式提供 OpenGL 2 支援。 panfrost(ARM Mali GPU)和 v4.5d(Broadcom VideoCore GPU)驅動程式支援 OpenGL 0。

主要創新:

  • 適用於 Intel GPU(Iris、Crocus 和 ANV)的驅動程式現在支援從虛擬機器使用 VirtIO-GPU 中的原生上下文直接存取 GPU。原生上下文透過直接向實際的主機 GPU 發送指令,提高了在客戶機系統中使用虛擬 GPU (virtio-gpu-gl) 時的效能。
  • 透過 Zink 驅動程序,PowerVR GPU 已新增了 OpenGL ES 2.0 支持,從而在支援 Vulkan API 的裝置上啟用硬體加速的 OpenGL。
  • rustl OpenCL 驅動程式現在需要靜態連結的 C++ 標準函式庫才能與使用原生 C++ 標準函式庫的應用程式正常運作。
  • radeonsi 驅動程式(AMD)已新增對 GL_NV_timeline_semaphore OpenGL 擴充功能的支援。
  • panfrost 驅動程式(ARM Mali)現在支援 OpenGL 擴充功能 GL_EXT_shader_image_load_store。
  • v3d 驅動程式(Broadcom VideoCore)現在支援 GL_ARB_sample_shading OpenGL 擴充功能。
  • 添加了對 Vulkan 擴展的支持:
    • panvk 的 VK_ARM_scheduling_controls
    • VK_EXT_acquire_drm_display 用於 panvk
    • panvk 的 VK_EXT_astc_decode_mode
    • panvk 的 VK_EXT_attachment_feedback_loop_dynamic_state
    • VK_EXT_attachment_feedback_loop_layout 用於 panvk
    • VK_EXT_blend_operation_advanced 用於 lavapipe
    • VK_EXT_color_write_enable 用於 panvk
    • panvk 的 VK_EXT_conditional_rendering
    • VK_EXT_depth_clamp_control 用於 panvk
    • RADV 的 VK_EXT_descriptor_heap(當設定 'export RADV_EXPERIMENTAL=heap' 時)
    • v3dv 的 VK_EXT_hdr_metadata
    • PVR 的 VK_EXT_image_drm_format_modifier
    • VK_EXT_image_view_min_lod 用於 panvk
    • VK_EXT_legacy_dithering 用於 panvk
    • VK_EXT_map_memory_placed 用於 panvk
    • panvk 的 VK_EXT_nested_command_buffer
    • VK_EXT_non_seamless_cube_map for pvr
    • RADV、NVK、Turnip、ANV、Honeykrisp、panvk 的 VK_EXT_present_timing
    • RADV 的 VK_EXT_primitive_restart_index
    • VK_EXT_rgba10x6_formats 用於 panvk
    • VK_EXT_shader_atomic_float 用於 panvk
    • VK_EXT_shader_stencil_export 用於 panvk
    • panvk 的 VK_EXT_zero_initialize_device_memory
    • VK_KHR_copy_memory_indirect 適用於 nvk、RADV/GFX8+
    • RADV 的 VK_KHR_device_address_commands
    • VK_{KHR,EXT}_{surface,swapchain}_maintenance1 用於 panvk
    • VK_KHR_get_display_properties2 用於 panvk
    • VK_KHR_get_surface_capabilities2 用於 panvk
    • RADV 的 VK_KHR_internally_synchronized_queues
    • VK_KHR_maintenance4 用於 pvr
    • PVR 的 VK_KHR_pipeline_executable_properties
    • panvk、v3dv 的 VK_KHR_present_id
    • VK_KHR_present_wait 用於 panvk、v3dv
    • VK_KHR_sampler_ycbcr_conversion 用於 pvr
    • VK_KHR_shader_integer_dot_product 用於 pvr
    • panvk 的 VK_KHR_shader_untyped_pointers
    • panvk 的 VK_KHR_swapchain_mutable_format
    • 蘿蔔的 VK_QCOM_image_processing
    • panvk 的 VK_VALVE_mutable_descriptor_type
    • VK_VALVE_shader_mixed_float_dot_product for RADV (Vega20, Navi14, RDNA2+)
  • 已實作的OpenCL擴充:
    • cl_khr_subgroup_ballot 適用於 asahi、iris、llvmpipe、radeonsi 和 zink
    • cl_xr_subgroup_clustered_reduce 用於 asahi、llvmpipe、radeonsi 和 zink
    • cl_khr_subgroup_extended_types 用於 asahi、iris、llvmpipe、radeonsi 和 zink
    • cl_khr_subgroup_non_uniform_arithmetic 用於 asahi、llvmpipe、radeonsi 和 zink
    • cl_khr_subgroup_non_uniform_vote 為朝日、鳶尾花、llvmpipe、radeonsi 和 zink
    • cl_khr_subgroup_rotate 用於 asahi、llvmpipe 和 zink
  • 為 QEMU 實現虛擬 GPU 的 VirGL 驅動程式已停止維護,除非有人願意接手維護,否則將移除。

來源: opennet.ru