Phát hành Mesa 26.1, triển khai miễn phí OpenGL và Vulkan

Sau ba tháng phát triển, phiên bản mã nguồn mở của các API OpenGL và Vulkan, Mesa 26.1.0, đã được phát hành. Phiên bản đầu tiên của nhánh Mesa 26.1.0 mang tính thử nghiệm; sau khi mã nguồn được ổn định hoàn toàn, phiên bản ổn định, 26.1.1, sẽ được phát hành.

Mesa 26.1 bổ sung hỗ trợ cho API đồ họa Vulkan 1.4 trong trình điều khiển ANV cho GPU Intel, RADV cho GPU AMD, NVK cho GPU NVIDIA, HoneyKrisp (hk) cho GPU Apple, Turnip cho GPU Qualcomm, PanVK cho GPU ARM Mali, trình rasterizer phần mềm lavapipe (lvp) và chế độ giả lập (vn). Trình điều khiển v3dv (GPU Broadcom VideoCore cho Raspberry Pi 4+) và dzn (Vulkan trên Direct3D 12) hỗ trợ Vulkan 1.0, trình điều khiển kk (KosmicKrisp, Vulkan trên Metal) hỗ trợ Vulkan 1.1, và trình điều khiển pvr (GPU Imagination PowerVR) hỗ trợ Vulkan 1.2.

Mesa cũng hỗ trợ OpenGL 4.6 đầy đủ cho iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (GPU Intel Gen4-Gen7 cũ hơn), AMD (r600), zink, llvmpipe, virgl (GPU ảo virgil3D cho QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (lớp OpenGL trên DirectX 12) và asahi (GPU AGX được sử dụng trong chip Apple M1 và M2). Hỗ trợ OpenGL 4.5 khả dụng cho GPU NVIDIA (nvc0). Hỗ trợ OpenGL 3.3 có sẵn trong trình điều khiển softpipe (trình rasterizer phần mềm) và nv50 (NVIDIA NV50). OpenGL 3 được hỗ trợ trong trình điều khiển panfrost (GPU ARM Mali) và v3.1d (GPU Broadcom VideoCore).

Những đổi mới chính:

  • Trình điều khiển cho GPU Intel (Iris, Crocus và ANV) hiện hỗ trợ truy cập GPU trực tiếp từ máy ảo bằng cách sử dụng ngữ cảnh gốc trong VirtIO-GPU. Ngữ cảnh gốc cải thiện hiệu suất khi làm việc với GPU ảo (virtio-gpu-gl) trong hệ thống khách bằng cách truyền trực tiếp các lệnh đến GPU thực tế của máy chủ.
  • Hỗ trợ OpenGL ES 2.0 đã được thêm vào cho GPU PowerVR thông qua trình điều khiển Zink, cho phép tăng tốc phần cứng OpenGL trên các thiết bị hỗ trợ API Vulkan.
  • Trình điều khiển OpenCL của rusticl hiện yêu cầu thư viện chuẩn C++ được liên kết tĩnh để hoạt động chính xác với các ứng dụng sử dụng thư viện chuẩn C++ gốc.
  • Trình điều khiển radeonsi (AMD) đã bổ sung hỗ trợ cho tiện ích mở rộng OpenGL GL_NV_timeline_semaphore.
  • Trình điều khiển panfrost (ARM Mali) hiện hỗ trợ phần mở rộng OpenGL GL_EXT_shader_image_load_store.
  • Trình điều khiển v3d (Broadcom VideoCore) hiện hỗ trợ tiện ích mở rộng OpenGL GL_ARB_sample_shading.
  • Đã thêm hỗ trợ cho tiện ích mở rộng Vulkan:
    • VK_ARM_scheduling_controls for panvk
    • VK_EXT_acquire_drm_display for panvk
    • VK_EXT_astc_decode_mode for panvk
    • VK_EXT_attachment_feedback_loop_dynamic_state for panvk
    • VK_EXT_attachment_feedback_loop_layout for panvk
    • VK_EXT_blend_operation_advanced for lavapipe
    • VK_EXT_color_write_enable for panvk
    • VK_EXT_conditional_rendering for panvk
    • VK_EXT_depth_clamp_control for panvk
    • VK_EXT_descriptor_heap cho RADV (khi thiết lập 'export RADV_EXPERIMENTAL=heap')
    • VK_EXT_hdr_metadata cho v3dv
    • VK_EXT_image_drm_format_modifier for pvr
    • VK_EXT_image_view_min_lod for panvk
    • VK_EXT_legacy_dithering for panvk
    • VK_EXT_map_memory_placed for panvk
    • VK_EXT_nested_command_buffer for panvk
    • VK_EXT_non_seamless_cube_map for pvr
    • VK_EXT_present_timing for RADV, NVK, Turnip, ANV, Honeykrisp, panvk
    • VK_EXT_primitive_restart_index cho RADV
    • VK_EXT_rgba10x6_formats for panvk
    • VK_EXT_shader_atomic_float for panvk
    • VK_EXT_shader_stencil_export for panvk
    • VK_EXT_zero_initialize_device_memory for panvk
    • VK_KHR_copy_memory_indirect for nvk, RADV/GFX8+
    • Lệnh VK_KHR_device_address dành cho RADV
    • VK_{KHR,EXT}_{surface,swapchain}_maintenance1 for panvk
    • VK_KHR_get_display_properties2 for panvk
    • VK_KHR_get_surface_capabilities2 cho panvk
    • Hàng đợi VK_KHR_đồng bộ nội bộ cho RADV
    • VK_KHR_maintenance4 cho pvr
    • Thuộc tính thực thi của đường ống VK_KHR dành cho pvr
    • VK_KHR_present_id cho panvk, v3dv
    • VK_KHR_hiện_wait cho panvk, v3dv
    • VK_KHR_sampler_ycbcr_conversion for pvr
    • VK_KHR_shader_integer_dot_product for pvr
    • VK_KHR_shader_untyped_pointers for panvk
    • VK_KHR_swapchain_mutable_format for panvk
    • VK_QCOM_image_processing for Turnip
    • VK_VALVE_mutable_descriptor_type for panvk
    • VK_VALVE_shader_mixed_float_dot_product for RADV (Vega20, Navi14, RDNA2+)
  • Các tiện ích mở rộng OpenCL đã được triển khai:
    • cl_khr_subgroup_ballot cho asahi, iris, llvmpipe, radeonsi và zink
    • cl_xr_subgroup_clustered_reduce for asahi, llvmpipe, radeonsi, and zink
    • cl_khr_subgroup_extended_types for asahi, iris, llvmpipe, radeonsi and zink
    • cl_khr_subgroup_non_uniform_arithmetic for asahi, llvmpipe, radeonsi and zink
    • cl_khr_subgroup_non_uniform_vote for asahi, iris, llvmpipe, radeonsi and zink
    • cl_khr_subgroup_rotate cho asahi, llvmpipe và zink
  • Trình điều khiển VirGL, dùng để triển khai GPU ảo cho QEMU, hiện không còn được duy trì và sẽ bị gỡ bỏ trừ khi có ai đó sẵn lòng tiếp quản việc bảo trì.

Nguồn: opennet.ru