Mesa 26.1 чыгаруу, OpenGL жана Vulkan акысыз ишке ашыруу

Үч айлык иштеп чыгуудан кийин, OpenGL жана Vulkan API'леринин ачык булактуу ишке ашыруусу Mesa 26.1.0 чыгарылды. Mesa 26.1.0 бутагынын биринчи чыгарылышы эксперименталдык; код толугу менен турукташтырылгандан кийин, туруктуу версиясы 26.1.1 чыгарылат.

Mesa 26.1 Vulkan 1.4 графикалык API үчүн колдоо кошот, Intel GPU үчүн ANV драйверлери, AMD GPU үчүн RADV, NVIDIA GPU үчүн NVK, Apple GPU үчүн HoneyKrisp (hk), Qualcomm GPU үчүн PanVK, ARM Mali GPUs үчүн PanVK, жана программалык камсыздоо режимдери, rastlava режимдери. (vn). v3dv (Raspberry Pi 4+ үчүн Broadcom VideoCore GPU) жана dzn (Vulkan over Direct3D 12) драйверлери Vulkan 1.0, kk драйвери (KosmicKrisp, Vulkan over Metal) Vulkan 1.1ди, ал эми pvr драйвери (Imagination PowerVR GPU)1.2 колдойт.

Mesa ошондой эле ирис (Intel Gen 4.6+ GPUs), radeonsi (AMD), Crocus (эски Intel Gen8-Gen4 GPU), AMD (r7), zink, llvmpipe, virgl (QEMU/KVM үчүн virgl600D виртуалдык GPU), freedreno (Qual3G on), freedreno (Qual3G on12) үчүн толук OpenGL 12 колдоосун камсыз кылат. DirectX 1) жана asahi (Apple M2 жана M4.5 чиптеринде колдонулган AGX GPU). OpenGL 0 колдоосу NVIDIA (nvc3.3) GPU'лары үчүн жеткиликтүү. OpenGL 50 колдоосу softpipe (программалык растризатор) жана nv50 (NVIDIA NV3) драйверлеринде жеткиликтүү. OpenGL 3.1 panfrost (ARM Mali GPU) жана vXNUMXd (Broadcom VideoCore GPU) драйверлеринде колдоого алынат.

Негизги инновациялар:

  • Intel GPU драйверлери (Iris, Crocus жана ANV) эми VirtIO-GPU'дагы жергиликтүү контексттерди колдонуп, виртуалдык машиналардан GPU'га түз кирүүнү колдойт. Жергиликтүү контексттер конок системасында виртуалдык GPU (virtio-gpu-gl) менен иштөөдө буйруктарды түздөн-түз хост GPU'га жөнөтүү менен иштин натыйжалуулугун жогорулатат.
  • Zink драйвери аркылуу PowerVR GPUлары үчүн OpenGL ES 2.0 колдоосу кошулуп, Vulkan API колдогон түзмөктөрдө аппараттык ылдамдатылган OpenGLди иштетет.
  • OpenCL драйвери rusticl эми C++ stdlib'лерин колдонгон тиркемелер менен туура иштеши үчүн статикалык түрдө байланышкан C++ stdlib'ин талап кылат.
  • 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
    • panvk үчүн VK_EXT_acquire_drm_display
    • panvk үчүн VK_EXT_astc_decode_mode
    • panvk үчүн VK_EXT_attachment_feedback_loop_dynamic_state
    • panvk үчүн VK_EXT_attachment_feedback_loop_layout
    • Лава түтүгү үчүн VK_EXT_blend_operation_advanced
    • panvk үчүн VK_EXT_color_write_enable
    • panvk үчүн VK_EXT_шарттуу_көрсөтүү
    • panvk үчүн VK_EXT_depth_clamp_control
    • RADV үчүн VK_EXT_descriptor_heap ('export RADV_EXPERIMENTAL=heap' коюлганда)
    • v3dv үчүн VK_EXT_hdr_metadata
    • pvr үчүн VK_EXT_image_drm_format_modifier
    • panvk үчүн VK_EXT_image_view_min_lod
    • panvk үчүн VK_EXT_legacy_dithering
    • VK_EXT_map_memory_placed panvk үчүн
    • panvk үчүн VK_EXT_nested_command_buffer
    • pvr үчүн VK_EXT_non_seamless_cube_map
    • RADV, NVK, Turnip, ANV, Honeykrisp, panvk үчүн VK_EXT_present_timing
    • RADV үчүн VK_EXT_primitive_restart_index
    • panvk үчүн VK_EXT_rgba10x6_formats
    • panvk үчүн VK_EXT_shader_atomic_float
    • panvk үчүн VK_EXT_shader_stencil_export
    • panvk үчүн VK_EXT_zero_initialize_device_memory
    • nvk, RADV/GFX8+ үчүн VK_KHR_copy_memory_indirect
    • RADV үчүн VK_KHR_түзмөктүн_дареги_буйруктары
    • panvk үчүн VK_{KHR,EXT}_{surface,swapchain}_maintenance1
    • panvk үчүн VK_KHR_get_display_properties2
    • panvk үчүн VK_KHR_get_surface_capabilities2
    • RADV үчүн VK_KHR_ички_синхрондоштурулган_кезектер
    • pvr үчүн VK_KHR_maintenance4
    • pvr үчүн VK_KHR_pipeline_executable_properties
    • panvk, v3dv үчүн VK_KHR_present_id
    • VK_KHR_present_wait panvk, v3dv
    • pvr үчүн VK_KHR_sampler_ycbcr_conversion
    • pvr үчүн VK_KHR_shader_integer_dot_product
    • panvk үчүн VK_KHR_shader_untyped_pointers
    • panvk үчүн VK_KHR_swapchain_mutable_format
    • Шалкан үчүн VK_QCOM_сүрөтүн_иштетүү
    • panvk үчүн VK_VALVE_mutable_descriptor_type
    • RADV үчүн VK_VALVE_shader_mixed_float_dot_product (Vega20, Navi14, RDNA2+)
  • OpenCL кеңейтүүлөрү ишке ашырылган:
    • cl_khr_subbroup_ballot for asahi, iris, llvmpipe, radeonsi жана zink
    • cl_xr_subgroup_clustered_reduce for asahi, llvmpipe, radeonsi жана zink
    • cl_khr_subbroup_extended_types for asahi, iris, llvmpipe, radeonsi жана zink
    • cl_khr_subgroup_non_uniform_arithmetic for asahi, llvmpipe, radeonsi жана zink
    • cl_khr_subgroup_non_uniform_vote for asahi, iris, llvmpipe, radeonsi жана zink
    • cl_khr_subgroup_rotate for asahi, llvmpipe жана zink
  • QEMU үчүн виртуалдык GPUну ишке ашырган VirGL драйвери мындан ары тейленбейт жана кимдир бирөө аны тейлөөнү колго алууга даяр болбосо, алынып салынат.

Source: opennet.ru