Release av Mesa 26.1, en gratis implementering av OpenGL och Vulkan

Efter tre månaders utveckling har öppen källkodsimplementeringen av OpenGL- och Vulkan-API:erna, Mesa 26.1.0, släppts. Den första utgåvan av Mesa 26.1.0-grenen är experimentell; efter att koden har stabiliserats helt kommer den stabila versionen, 26.1.1, att släppas.

Mesa 26.1 lägger till stöd för Vulkan 1.4 grafik-API i ANV-drivrutinerna för Intel GPU:er, RADV för AMD GPU:er, NVK för NVIDIA GPU:er, HoneyKrisp (hk) för Apple GPU:er, Turnip för Qualcomm GPU:er, PanVK för ARM Mali GPU:er, lavapipe-programvaru-rasterizern (lvp) och emulatorläge (vn). Drivrutinerna v3dv (Broadcom VideoCore GPU för Raspberry Pi 4+) och dzn (Vulkan över Direct3D 12) stöder Vulkan 1.0, kk-drivrutinen (KosmicKrisp, Vulkan över Metal) stöder Vulkan 1.1 och pvr-drivrutinen (Imagination PowerVR GPU) stöder Vulkan 1.2.

Mesa erbjuder även fullt OpenGL 4.6-stöd för iris (Intel Gen 8+ GPU:er), radeonsi (AMD), Crocus (äldre Intel Gen4-Gen7 GPU:er), AMD (r600), zink, llvmpipe, virgl (virgil3D virtuell GPU för QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (OpenGL-lager ovanpå DirectX 12) och asahi (AGX GPU som används i Apple M1- och M2-chip). OpenGL 4.5-stöd är tillgängligt för NVIDIA (nvc0) GPU:er. OpenGL 3.3-stöd är tillgängligt i drivrutinerna softpipe (programvarurasteriserare) och nv50 (NVIDIA NV50). OpenGL 3 stöds i drivrutinerna panfrost (ARM Mali GPU) och v3.1d (Broadcom VideoCore GPU).

Huvudsakliga innovationer:

  • Drivrutiner för Intels GPU:er (Iris, Crocus och ANV) stöder nu direkt GPU-åtkomst från virtuella maskiner med hjälp av nativa kontexter i VirtIO-GPU. Nativa kontexter förbättrar prestandan när man arbetar med en virtuell GPU (virtio-gpu-gl) i ett gästsystem genom att direkt överföra kommandon till den faktiska värd-GPU:n.
  • Stöd för OpenGL ES 2.0 har lagts till för PowerVR GPU:er via Zink-drivrutinen, vilket möjliggör hårdvaruaccelererad OpenGL på enheter som stöder Vulkan API.
  • OpenCL-drivrutinen rusticl kräver nu en statiskt länkad C++ stdlib för att fungera korrekt med applikationer som använder nativa C++ stdlibs.
  • Radeonsi-drivrutinen (AMD) har lagt till stöd för OpenGL-tillägget GL_NV_timeline_semaphore.
  • Panfrost-drivrutinen (ARM Mali) stöder nu OpenGL-tillägget GL_EXT_shader_image_load_store.
  • v3d-drivrutinen (Broadcom VideoCore) stöder nu OpenGL-tillägget GL_ARB_sample_shading.
  • Lade till stöd för Vulkan-tillägg:
    • 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_villkorlig_rendering för panvk
    • VK_EXT_depth_clamp_control för panvk
    • VK_EXT_descriptor_heap för RADV (när 'export RADV_EXPERIMENTAL=heap' är inställt)
    • 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_format 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_device_address_commands 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 kålrot
    • VK_VALVE_mutable_descriptor_type för panvk
    • VK_VALVE_shader_mixed_float_dot_product för RADV (Vega20, Navi14, RDNA2+)
  • OpenCL-tillägg implementerade:
    • cl_khr_subgroup_ballot för Asahi, Iris, llvmpipe, Radeonsi och Zink
    • cl_xr_subgroup_clustered_reduce för Asahi, llvmpipe, Radeonsi och Zink
    • cl_khr_subgroup_extended_types för Asahi, Iris, llvmpipe, Radeonsi och Zink
    • cl_khr_subgroup_non_uniform_arithmetic för Asahi, llvmpipe, Radeonsi och Zink
    • cl_khr_subgroup_non_uniform_vote för Asahi, Iris, llvmpipe, Radeonsi och Zink
    • cl_khr_subgroup_rotate för asahi, llvmpipe och zink
  • VirGL-drivrutinen, som implementerar en virtuell GPU för QEMU, underhålls inte längre och kommer att tas bort om inte någon är villig att ta över dess underhåll.

Källa: opennet.ru