Mesa 26.2.6 Release Notes / 2026-10-28

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

Mesa 26.2.6 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.6 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.6 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

TBD.

New features

  • None

Bug fixes

  • ACO: s_bitset0 retargeted to exec drops the VCC condition (26.2 regression from 984aa6e0855, RADV, RDNA2 to RDNA4, KytyPS5)

  • ANV: Assert on vkGetPhysicalDeviceImageFormatProperties2

  • Confidential issue #16630

  • GPULostDevice on 6800 XT (mesa-26.0.X)

  • Intel Meteor Lake: Unigine Heaven and Valley trigger GPU hangs with Mesa 26.2.0–26.2.4; work with 26.1.8

  • Witcher 3 Remastered - Graphical/visual bug that act like an overlay

  • [Turnip/A650] Hangs in several several games due to some missing shader(?) workaround

  • d3d12 (WSL2, NVIDIA RTX 5090): self-deadlock in d3d12_bo_new(), reclaim under pb_slab manager mutex hangs RPCS3 on compressed texture upload

  • freedreno: garbled text rendered by pdf.js on snapdragon x1 elite

  • kopper: non-dmabuf sw texture update is broken

  • lavapipe: maintenance8 depth/stencil <-> color vkCmdCopyImage copies only sample 0 of multisampled D32_SFLOAT_S8_UINT and D24_UNORM_S8_UINT images

  • lavapipe: new RT fails

  • v3dv: gpu hang when an inline uniform block comes before a sampled image

Changes

3mro777o (1):

  • nir/opt_varyings: use nir_src_rewrite when shrinking varying arrays

AeroModes (1):

  • meson: fix GNU qsort_r detection for GCC

Caio Oliveira (4):

  • intel/compiler: Fix cooperative matrix conversion signedness

  • jay: Update PHI uniform field when spilling its destination

  • gen: Fix typo in validation for special restrictions

  • jay: Don’t lower U32 movs to F32 when cmod is being used

Callum Fare (1):

  • ir3: Fix potential out-of-range load_const_ir3 base offset

Christian Gmeiner (3):

  • etnaviv: blt: Program the source TS for mipmap generation

  • etnaviv: Update sampler sources before deriving state

  • etnaviv: Expose only the linear modifier for NV12

Connor Abbott (3):

  • tu: Don’t bail after the first instr when gathering push const range

  • tu: Fix bindless descriptor invalidate sequence

  • ir3: Only call nir_opt_shrink_vectors once

Daniel Schürmann (2):

  • nir/lower_continue_constructs: preserve phi sources when simplifying loop jumps

  • nir/lower_continue_constructs: preserve SSA dominance across nested exits

Danylo Piliaiev (3):

  • tu/a6xx: Set correct value for GRAS_MODE_CNTL

  • tu/a6xx: Invalidate shared consts before disabling them

  • freedreno: Fixup incorrectly copied A6XX_TPL1_DBG_ECO_CNTL for A650

Dave Airlie (5):

  • llvmpipe: handle indirect geometry shader inputs

  • llvmpipe: add vector width to the disk cache.

  • lavapipe: fix multisample depth<->color copies.

  • egl/surfaceless: don’t probe device name if fd is invalid.

  • llvmpipe: advance 1D framebuffer fetches at four lanes

David Rosca (5):

  • radeonsi/mm: Set error when failing to map bitstream buffer

  • radeonsi/mm: Don’t return feedback when allocating buffer fails

  • radeonsi/mm: Fix pipe_context leak when cs_create fails

  • radeonsi/mm: Check embedded buffer map fails

  • radeonsi/mm: Increase obu_size length to 2 bytes in AV1 sequence header

Dmitry Baryshkov (3):

  • ir3: do not let full-register writes reset half-register delays before a6xx

  • ir3: reserve image dimensions for read-write images on a5xx

  • freedreno/a4xx+a5xx: clear PIPE_BIND_OPENCL before checking format support

Dominique Belhachemi (1):

  • pvr: amend shared memory coeff reg count to use DWORD granularity

Dylan Baker (1):

  • meson: imgui-sdl3-vulkan needs the vulkan loader headers

Emma Anholt (3):

  • freedreno: Ensure that the generated pack headers are stable between builds.

  • isaspec: Fix encoder output stability.

  • nir/opt_algebraic_test: Fix unit test codegen output stability.

Eric Engestrom (3):

  • docs: add sha sum for 26.2.5

  • .pick_status.json: Update to a0aea0d2d932064dd6de7f856d49bf69f79ee1de

  • .pick_status.json: Mark 4bf3e753783fac66fb7059e423ef049334e186d5 as denominated

Erik Faye-Lund (13):

  • panfrost: plug precomp-shader leak

  • panvk: fix allow_merging_workgroups logic

  • panvk: drop redundant descriptor-copy

  • pan/lib: fix repeated width_px check

  • pan/lib: fix copy-pasta bug

  • pan/lib: do not fold into the same op twice

  • panfrost: free correct handle

  • pan/bi: handle tls-stores in helper analysis

  • vulkan/meta: correct image-resolve for 3D image

  • panvk: properly ignore depth-stencil aspectMask

  • vulkan/meta: fixup typo

  • panvk: track heap budget across instances

  • panvk: write_image_view_desc deals with images, not samplers

Fabricio Akio (1):

  • freedreno/a5xx: Reload textures, SSBOs and images after the program

Faith Ekstrand (2):

  • pan/nir: Don’t use narrow_array_index with wide_indices

  • kopper: Don’t call swrast_update_tex_buffer() if we don’t have swrast

Georg Lehmann (4):

  • vc4: set lower_int64_options to not support any 64bit alu

  • v3dv: set lower_int64_options to not support any 64bit alu

  • radv: expose fp16 on gfx8 for vkd3d-proton

  • aco/isel: fix sgpr sub dword nir_op_vec with undefs

HTRMC (1):

  • v3dv: keep descriptors aligned after inline uniform blocks

Herman Semenoff (1):

  • intel/i915: fix I915_PARAM_HAS_CONTEXT_FREQ_HINT check and low latency param value

Iago Toral Quiroga (1):

  • v3dv: Fix early-ez on v71

Ian Romanick (4):

  • brw: Fix regions_overlap for accumulators

  • brw: CSEL cannot mix type sizes even for immediates

  • brw: CSEL cannot have immediate src1

  • brw: Fix 16-bit type handling in constant combining

Jack Boykin (1):

  • radv/video: remove decode tier3

Jesse Natalie (2):

  • d3d12: Stop reclaim retries when the fence wait fails

  • d3d12: Reclaim buffer memory outside manager locks

Job Noorman (1):

  • tu: fix texel buffer emulation bounds check

Jose Maria Casanova Crespo (1):

  • broadcom/compiler: keep robust SSBO stores scalar for bounds checking

Juan A. Suarez Romero (1):

  • egl/gbm: Ignore current from buffer in has_free_buffers

Karol Herbst (6):

  • util/queue: remove locked argument from util_queue_kill_threads

  • util/queue: remove locked argument from util_queue_adjust_num_threads

  • util/queue: Fix dead-lock between queue_finish and queue_kill_threads

  • rusticl/program: implement CL_INVALID_SPEC_ID error for clSetProgramSpecializationConstant

  • rusticl/spirv: add SPIRVBin::specialize

  • rusticl/program: fix spec constants

Konstantin Seurer (1):

  • lavapipe: Fix DGC + conditional rendering

Krzysztof Sokołowski (1):

  • lima: close the screen fd on destroy and on failed creation

Leon Seemann (1):

  • vbo: Fix extra vertex drawn on line loop end after buffer wrap

Lionel Landwerlin (6):

  • brw: fix oob source access

  • vulkan/wsi: fix a bunch of incorrect error code checks

  • anv: avoid leak on internal kernels

  • anv: fix potential set_layout null pointer access

  • intel/compiler: always run query optimization passes on supporting HW

  • anv: bail early on unsupported image format

Lokbondo Kung (1):

  • util: Fix misaligned address for ‘gc_slab’

Martin Roukala (né Peres) (1):

  • Revert “ci-tron: bypass caching proxy for docker images”

Mary Guillemard (1):

  • nvk: Do not overwrite prev_subc if no method were emitted

Matt Turner (4):

  • gallivm: don’t emit a scalar llvm.nearbyint on PowerPC

  • gallivm: truncate integer constants to the type width

  • mesa: zero pipe_memory_info before querying it

  • mesa: don’t read past the name when matching a resource without its [0]

Maíra Canal (1):

  • v3dv: drop the “accum_fd” assertion in merge_syncobjs()

Mike Blumenkrantz (40):

  • zink: update the pipeline when the draw mode needs a different one

  • zink: update the last vertex stage variant when its key changes

  • zink: emit global binding barriers before setting batch usage

  • zink: count every held swapchain image against the acquire limit

  • zink: stop retrying swapchain acquires that cannot succeed

  • zink: stop spinning on swapchain readbacks that can’t acquire an image

  • zink: don’t acquire a new swapchain image to read presented content

  • zink: mark swapchain readback copies stale on GENERAL layout barriers

  • zink: create swapchain readback copies as stale

  • zink: use readback copies when a presented image cannot be reacquired

  • zink: wait for the acquire before presenting an image for readback

  • zink: recycle present semaphores when their image is acquired again

  • zink: resolve swapchain blit sources before any blit path reads them

  • zink: only try DISJOINT for multi-planar formats in find_good_mod

  • wgl: keep the GALLIUM_DRIVER name valid for driconf

  • wgl: don’t wait for the gpu on zink swaps

  • wgl: don’t choose pbuffer-only pixel formats for windows

  • anv+hasvk: keep shaderInt8 with no_16bit

  • lavapipe: only advertise VK_EXT_headless_surface with WSI

  • zink: only enable VK_EXT_headless_surface with VK_KHR_surface

  • mesa: raise INVALID_VALUE for bad msrtt texture sample counts

  • mesa: raise INVALID_ENUM for msrtt textargets that are not 2d or a face

  • mesa: raise the OVR_multiview draw errors for xfb and extra stages

  • mesa: allow multiview attachments of any texture level

  • mesa: give RenderbufferStorageMultisampleEXT the INVALID_VALUE sample limit

  • mesa: allow reading from EXT_multisampled_render_to_texture renderbuffers

  • mesa: don’t mix implicit and explicit multisample attachments

  • zink: create msrtss transients with only the attached level

  • zink: reload msrtss transients after transfer writes to the image

  • radeonsi: re-emit the sqtt pipeline when shader states are emitted

  • mesa/st: pass PIPE_IMAGE_ACCESS bits to make_image_handle_resident

  • zink: share bindless handles between contexts

  • zink: track bindless image access per context

  • zink: drop bindless residency on context destroy

  • zink: fix bindless image buffer descriptors

  • zink: index bindless buffer arrays without the handle offset

  • zink: consistently use atomics for ctx->robust_ctx_count access

  • zink: unlock the copy context when timestamp query creation fails

  • zink: don’t update unordered state in get_cmdbuf() in the presence of current usage

  • zink: create mesh full programs when replacing mesh separable programs

Oliver Clarke (1):

  • radv: disable 8x MSAA for VRS in device properties

Peyton Lee (2):

  • radeonsi/vpe: fix YUV422 output width issue

  • radeonsi/vpe: fix 3D LUT channel order and PQ tone mapping

Rhys Perry (3):

  • radv: stop checking dirty bit in CmdExecuteCommands HiZ workaround

  • aco: add a couple aco_alu_opcode_info methods

  • aco/opt_postRA: check for tied defs in try_optimize_branching_sequence

Rob Clark (1):

  • freedreno/a6xx: Fix fbfetch with msrtt

Samuel Pitoiset (6):

  • radv: fix the VMA heap size for the descriptor sets allocator

  • radv: fix a memory leak when allocating a pool entry failed

  • radv: fix the error code when allocating a pool entry failed

  • radv: allow multisampling with 2D CUBE_COMPATIBLE images with MSRTSS

  • radv: fix emitting RSRC2 for vertex prologs

  • radv/rt: fix overwriting stack size on partial cache hits

Skipin Andrey (3):

  • dri3: ignore IdleNotify for a reused pixmap XID

  • wsi/x11: ignore IdleNotify for a reused pixmap XID

  • vl/dri3: ignore IdleNotify for a reused pixmap XID

Tapani Pälli (1):

  • iris: update nir information within iris_force_dual_color_blend

Timothy Arceri (1):

  • st/mesa: pass the edge flag vertex element to the draw module

Valentine Burley (2):

  • lavapipe: Guard VK_EXT_multisampled_render_to_swapchain with LVP_USE_WSI_PLATFORM

  • zink/ci: Move glx@glx-make-current to flakes

Yiwei Zhang (23):

  • venus: fix DMR on import failure

  • venus: amend TLS ring error check in pipeline cache retrieval

  • venus: fix a race condition for TLS ring creations

  • venus: return TIMEOUT instead of NOT_READY on fence wait timeout

  • venus: fix legacy semaphore wait values to align with semaphores

  • venus: fix lockless query of descriptor size cache

  • venus: fix vk_command_pool adoption

  • venus: recycle sfb cmds when wait is done elsewhere

  • venus: avoid new sfb cmds being prematurely recycled

  • venus/sim_syncobj: amend to set errno on wait timeout

  • venus/virtgpu: avoid potential double BO destroy

  • venus: fix maint7 zero layeredApiCount with non-NULL pLayeredApis

  • venus: avoid UB in vn_get_ahb_image_props

  • venus: avoid null ptr dereference for zero external image handleType

  • venus: properly scrub VkGraphicsPipelineCreateInfo::renderPass

  • vulkan/runtime/meson: avoid duplicate header gen deps list

  • venus: fix pWaitDstStageMask when dropping imported semaphores

  • venus/sim_syncobj: convert absolute timeout back to relative

  • venus: avoid deadlock in cs upload for guest vram

  • venus: ignore VkImportMemoryFdInfoKHR if handleType is 0

  • venus: fix planar format host copy size calc

  • venus: consider buffer usage 2 when fixing external buffer pNext

  • venus: only call vn_wsi_sync_wait with valid sync fd

bslette (1):

  • nak: never encode IDP.4A with an immediate source

llyyr (1):

  • radv/amdgpu: fix BO list leak on command submit failure

osman.yagci (1):

  • egl/dri2: destroy the display lock when the display is destroyed

soka (3):

  • zink: wait for dma-buf fences when the batch ends

  • zink: track batch dmabuf exports in a hash_table instead of a set

  • zink: wait for dma-buf readers only when writing