Release of Mesa 21.2, a free implementation of OpenGL and Vulkan

After three months of development, the release of the free implementation of the OpenGL and Vulkan APIs, Mesa 21.2.0, has been published. The first release of the Mesa 21.2.0 branch has an experimental status - after the final stabilization of the code, a stable version 21.2.1 will be released.

Mesa 21.2 has full OpenGL 4.6 support for the 965, iris (Intel), radeonsi (AMD), zink, and llvmpipe drivers. OpenGL 4.5 support is available for AMD (r600) and NVIDIA (nvc0) GPUs, and OpenGL 4.3 for virgl (Virgil3D virtual GPU for QEMU/KVM). Vulkan 1.2 support is available for Intel and AMD cards, as well as in emulator (vn) mode, Vulkan 1.1 support is available for Qualcomm GPUs and lavapipe software rasterizer, and Vulkan 1.0 for Broadcom VideoCore VI (Raspberry Pi 4) GPUs.

Main innovations:

  • The asahi OpenGL driver is included with initial support for the GPU supplied in the Apple M1 chips. The driver uses the Gallium interface and supports most of the features of OpenGL 2.1 and OpenGL ES 2.0, but is not yet suitable for running most games. The driver code is based on the noop reference Gallium driver, with some code ported from the Panfrost driver developed for the ARM Mali GPU.
  • Crocus OpenGL driver included with support for older Intel GPUs (based on Gen4-Gen7 microarchitectures) not supported by the Iris driver. Unlike the i965 driver, the new driver is based on the Gallium3D architecture, which outsources memory management tasks to the DRI driver in the Linux kernel and provides a ready-made state tracker with support for the output object reuse cache.
  • The PanVk driver is included to provide support for the Vulkan graphics API for ARM Mali Midgard and Bifrost GPUs. PanVk is developed by Collabora employees and is positioned as a continuation of the development of the Panfrost project, which provides support for OpenGL.
  • The Panfrost driver for GPU Midgard (Mali T760 and newer) and GPU Bifrost (Mali G31, G52, G76) supports OpenGL ES 3.1. Further plans include work to increase performance on Bifrost chips and support for GPUs based on the Valhall architecture (Mali G77 and newer).
  • 32-bit builds for x86 architecture use sse87 instructions instead of x2 instructions for math calculations.
  • Nouveau nv50 driver for NVIDIA GT21x GPU (GeForce GT 2x0) supports OpenGL ES 3.1.
  • The TURNIP Vulkan driver and the Freedreno OpenGL driver developed for Qualcomm Adreno GPUs have initial support for Adreno a6xx gen4 (a660, a635) GPUs.
  • Support for primitive culling using NGG (Next-Gen Geometry) shader engines has been added to the RADV (AMD) Vulkan driver. Implemented the ability to build the RADV driver on the Windows platform using the MSVC compiler.
  • The ANV Vulkan driver (Intel) and the Iris OpenGL driver have been preparatory to supporting upcoming Intel Xe-HPG (DG2) graphics cards. This includes initial features related to ray tracing and shader support for ray tracing.
  • The lavapipe driver with the implementation of a software rasterizer for the Vulkan API (similar to llvmpipe, but for Vulkan, which translates Vulkan API calls to the Gallium API) supports the "wideLines" mode (provides support for lines with a width greater than 1.0).
  • Implemented support for dynamic discovery and loading of alternative GBM (Generic Buffer Manager) backends. The change aims to improve Wayland support on systems with NVIDIA drivers.
  • The Zink driver (an implementation of the OpenGL API on top of Vulkan that allows you to get hardware accelerated OpenGL when the system has drivers limited to supporting only the Vulkan API) supports the OpenGL extensions GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_texture_filter_minmax and GL_ARB_shader_clock. Added DRM format modifiers (Direct Rendering Manager, VK_EXT_image_drm_format_modifier extension included).
  • Added support for extensions to RADV (AMD), ANV (Intel) and lavapipe Vulkan drivers:
    • VK_EXT_provoking_vertex (RADV);
    • VK_EXT_extended_dynamic_state2 (RADV);
    • VK_EXT_global_priority_query (RADV);
    • VK_EXT_physical_device_drm (RADV);
    • VK_KHR_shader_subgroup_uniform_control_flow (RADV, ANV);
    • VK_EXT_color_write_enable (RADV);
    • VK_EXT_acquire_drm_display (RADV, ANV);
    • VK_EXT_vertex_input_dynamic_state(lavapipe);
    • VK_EXT_line_rasterization(lavapipe);
    • VK_EXT_multi_draw(ANV, lavapipe, RADV);
    • VK_KHR_separate_depth_stencil_layouts (lavapipe);
    • VK_EXT_separate_stencil_usage(lavapipe);
    • VK_EXT_extended_dynamic_state2 (lavapipe).

Source: opennet.ru

Add a comment