Mesa 26.2.5 Release Notes / 2026-10-14

Mesa 26.2.5 is a bug fix release which fixes bugs found since the 26.2.4 release.

Mesa 26.2.5 implements the OpenGL 4.6 API, but the version reported by glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. Some drivers don’t support all the features required in OpenGL 4.6. OpenGL 4.6 is only available if requested at context creation. Compatibility contexts may report a lower version depending on each driver.

Mesa 26.2.5 implements the OpenCL 3.1 API, but the version reported by the CL_DEVICE_VERSION, CL_DEVICE_NUMERIC_VERSION and CL_DEVICE_OPENCL_C_ALL_VERSIONS clGetDeviceInfo queries depends on the particular driver being used.

Mesa 26.2.5 implements the Vulkan 1.4 API, but the version reported by the apiVersion property of the VkPhysicalDeviceProperties struct depends on the particular driver being used.

SHA checksums

SHA256: 794b3d1729075dae7ebd47c7283b7ca0cdb5dec668f7f11cc0a5d82f6138a0a5  mesa-26.2.5.tar.xz
SHA512: 08c7d7ea426ddfb0f7bc51b06e18c363a4d31cf1a8b203828bb455eda0189e41d2215eb9f627585ed11e0d0f231a6a8c9f0c7176238760cd76b62e20c35ccd6a  mesa-26.2.5.tar.xz

New features

  • None

Bug fixes

  • Mesa 26.2.1 Ground Truth Ambient Occlusion Broken on No Man’s Sky

  • Mesh shader uniform/constant rendering issue

  • RADV regression in Mesa 26.2.x – No Man’s Sky has broken/dark sunlight on RX 7900 XT

  • Regression: D3D12 driver and DRI broken under WSL in 25.0.4

  • SIGILL with llvmpipe on ARMv9(?) without SVE

  • X-Plane 12 encountering a GPU crash on load after recent update.

  • [Forts RTS] Corrupt rendering of compressed textures

  • aco: illegal VOP3 v_cndmask_b32 with two SGPR operands on GFX6-9 in emit_scaled_op (fp32 denorm preserve) → wrong results

  • radeonsi: incorrect rendering in Doom 3: BFG

  • radv/amdgpu: padding VM page (RADEON_FLAG_VM_PAD_1PAGE) is never unmapped on BO destroy; VA reuse then fails with “va … conflict” on GFX9

  • rusticl: could not initialize SVM support with radeonsi,zink

  • zink: wrong pipeline after a vertex-layout-only change without VK_EXT_vertex_input_dynamic_state

Changes

Caio Oliveira (1):

  • iris: Free compute compilation context on failure

Christian Gmeiner (2):

  • etnaviv: Update valid_buffer_range for stream output buffers

  • etnaviv: Skip render compatibility for external TS plane resources

Connor Abbott (1):

  • vulkan/graphics_state: Don’t get IAL state when not needed

Derek Lesho (1):

  • zink: Catch all prior updates to source valid_buffer_range.

Dmitry Baryshkov (7):

  • freedreno/common: flag a workaround for CP_DRAW_AUTO issue in a630_sqe

  • freedreno/registers: define format of the PC_AUTO_VERTEX_STRIDE register

  • freedreno/a6xx: workaround an issue in a630_sqe.fw

  • tu: workaround an issue in a630_sqe.fw

  • freedreno/a5xx: set the sample count before the GMEM restore blits

  • freedreno/a5xx: write the linear centroid interpolator regid

  • ir3: keep the msaa key for shaders that interpolate at gl_SampleID

Dominique Belhachemi (1):

  • pco: fix workgroup barrier race when reused across loop iterations

Dylan Baker (1):

  • intel/jay: Don’t attempt to do work when there is none

Eric Engestrom (3):

  • docs: add sha sum for 26.2.4

  • .pick_status.json: Update to 81dff7c64fb0c1f2031d04ccff9972233e2e0524

  • .pick_status.json: Mark a82ed85088954206fb1c30d016f18310fa614279 as denominated

Eric R. Smith (1):

  • panfrost: fix UB in pan_csf pointer based type-punning

Fabio Piparo (1):

  • vc4: don’t reuse flags from before a thread switch

Frank Binns (1):

  • pvr: fix for job samples being initialised to 0

Frank Bouwer (1):

  • pvr: fix for multisampling with no attachments

Georg Lehmann (4):

  • vtn: add an option to force exact GLSLstd450Fma

  • radv: add an option to force exact GLSLstd450Fma

  • radv: force exact GLSLstd450Fma for No Man Sky

  • aco: fix constant bus violation for scaled transcendental op

Gustavo Noronha Silva (1):

  • venus: don’t run a thread’s TLS teardown from an unloaded driver

Ian Romanick (1):

  • nir/algebraic: Don’t generate 64-bit iadd3 when not supported

Icenowy Zheng (2):

  • llvmpipe: do not call LLVMLinkInMCJIT() when using OrcJIT

  • meson: link in orcjit instead of mcjit when using OrcJIT

Jade Macho (1):

  • gallium/sw: Fix llvmpipe being chosen when not wanted

Jeongik Cha (1):

  • gfxstream: allow VK_EXT_vertex_attribute_divisor again

Jordan Justen (2):

  • intel/gen/compact: Fix typo in Xe3P compact tables

  • intel/gen/compact: Fix UNCOMP_3SRC_SOURCE for Xe3P

Karol Herbst (2):

  • rusticl/context: skip non SVM devices in clSVMAlloc

  • rusticl/platform: skip non SVM devices when creating the VM heap

Konstantin Seurer (1):

  • radv: Align bvh to 128 bytes on GFX12

Leon Seemann (1):

  • zink: update the pipeline when only the vertex input state changes

Lionel Landwerlin (4):

  • anv: fix dynamic buffer base offset upload

  • anv: store availabilty before writing partial results

  • anv: fence MI availabilty writes

  • anv: track the query pool copies for resets

Lokbondo Kung (1):

  • llvmpipe: fix ubsan shift exponent too large error

Lucie Hartmann (1):

  • gallivm: Query host CPU features on aarch64 too

Marek Olšák (1):

  • radv: fix to use HTILE fills instead of RMW shaders to restore previous behavior

Mary Guillemard (3):

  • nvk/nvkmd: handle exec_count == 0 in nvkmd_nouveau_exec_ctx_exec

  • nouveau/mme: Add dependency on mthd for DREAD/DWRITE

  • nouveau/mme: Fix scratch_share_3d_to_compute test

Matt Turner (9):

  • gallivm: don’t use the s3tc and rgtc JIT decoders on big-endian

  • gallivm: pick the right lane for image stores wider than 32 bits on big-endian

  • gallivm: fix first_active_invocation() on big-endian

  • gallivm: fix unpack_64_2x32_split for scalars on big-endian

  • gallivm: only use vmaxfp for 32-bit floats

  • gallivm: don’t use vminfp and vmaxfp when NaN operands must be ignored

  • gallivm: use VSX for rounding when available

  • gallivm: don’t use vminfp and vmaxfp when VSX is available

  • nir, glsl, gallium: keep the halves of lowered 64-bit IO in memory order

Matthieu Moatti (1):

  • pan/bi: Restore VA_MEMORY_ACCESS_FORCE for spills and refills

Mike Blumenkrantz (27):

  • zink/kopper: fix check for async presents

  • zink/kopper: wait on async presents when updating swapchain

  • zink/kopper: stop leaking swapchains harder

  • zink/kopper: do a full glthread/tc sync when setting swap interval

  • zink/kopper: use the actual current image extent when setting swap interval

  • zink: return on flush_frontbuffer if swapchain is kill

  • zink/kopper: fix return value in acquire

  • kopper: move event selection for present into kopperGetSyncValues

  • zink/kopper: add locking around ANI and QP

  • zink/kopper: fix invalid read during swapchain teardown

  • util/texcompress_rgtc: zero-initialize encode variables

  • zink/sync: plug an extremely tricky hole in reordering logic

  • util/disk_cache: only subtract an evicted item if unlink succeeded

  • util/disk_cache: put guard pages around the index mapping

  • util/disk_cache: return whether evict_lru_item removed a file

  • util/disk_cache: recompute an impossible size counter on open

  • util/disk_cache: recompute the size when eviction cannot help

  • util/disk_cache: remove stale .tmp files when recomputing the size

  • st/pbo: skip delete_compute_state for shaders never created

  • zink: clear the generated tcs nir pointer after it is freed

  • zink: check unflushed under the usage mutex in the unflushed wait

  • zink: take ralloc_lock around screen-parented rallocs

  • zink: stop parenting the screen’s semaphore arrays to the screen

  • zink: serialize unthreaded batch submission per screen

  • zink: force sync after unbind, even with GENERAL layouts

  • zink: ensure descriptor buffers stay mappable without BAR alloc

  • zink: avoid constantly failing BAR allocations on systems without ReBAR

Mikhail Mlhcnn (2):

  • util/tc: reset end_call when rp info is reused after sync

  • util/tc: fix buffer over-read and thread race in staging texture_subdata

Nikita Konton (1):

  • radeonsi: invalidate I$/SMEM$/VMEM$ at IB start on all gfx levels

Olivia Lee (1):

  • panvk: fix null pointer dereference in GetInstanceProcAddr

Omar Rashwan (2):

  • nir/instr_set: compare tex def when CSEing texture instructions

  • nir/instr_set: compare tex dest_type instead of bit size when CSEing texture instructions

Peter Quayle (1):

  • pvr: fix stream-out PDS data size units in CSB dump

Pierre-Eric Pelloux-Prayer (3):

  • radeonsi: remove invalid assert

  • radeonsi/gfx12: dont set BO metadata on import

  • winsys/amdgpu: fix import/destroy race again

Rob Clark (1):

  • freedreno/common: Fix a702 chip-id

Samuel Pitoiset (4):

  • radv/rt: fix checking errors for imported binaries

  • radv/rt: fix importing pipeline binaries

  • radv/nir: fix determining if a VS input location is high 64-bit

  • radv/amdgpu: unmap the first page used to implement VM padding

Simon Perretta (1):

  • pco: temporarily disable vtxin allocation due to vec handling bug

Thong Thai (1):

  • driconf: Add ignore_map_invalidate_buffer option

Timothy Arceri (5):

  • radeonsi: correctly detect and set mesh shaders as dirty

  • radeonsi: widen bind_history bitfield

  • gallium/tc/zink: widen rebind_mask to support use by mesh shaders

  • zink: fix rebinding support for mesh shaders

  • util/format: fix typo in the BPTC compressor

Vinson Lee (1):

  • egl: Fix int-to-void-pointer-cast warning on macOS

matthewperiut (1):

  • venus: skip virtio-gpu devices without 3D

mitul72 (1):

  • radv: Clear stale vertex user SGPR state when binding mesh shaders

soka (1):

  • zink: check the primitive type after zink_batch_rp()