Mesa 25.0.4 Release Notes / 2025-04-17 — The Mesa 3D Graphics Library latest documentation

# Mesa 25.0.4 Release Notes / 2025-04-17

Mesa 25.0.4 is a bug fix release which fixes bugs found since the 25.0.3 release.

Mesa 25.0.4 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 25.0.4 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

- RADV: Performance regression in Elden Ring on GFX8/Polaris

- RADV: Performance regression in Elden Ring on GFX8/Polaris

- Confidential issue #12324

- Confidential issue #12946

- The Last of Us Part I GPU hang on gfx1201

- brw: new Xe2 CTS failures

- [NVK] NAK assert in The Last of Us Part 2 shader

- [ANV][LNL] - Lost Records: Bloom & Rage (1902960) - Title hangs on launch and subsequently crashes to desktop.

- [BMG] Intel b580 battlemage: Fort Solis (Unreal Engine game) boots to menu, hangs while loading after hitting continue from the main menu

- [ANV][LNL] - NINJA GAIDEN 2 Black (3287520) - Environment assets are incorrectly rendered or missing.

- [ANV][LNL] - The Headliners (3059070) - Title hangs a few minutes after launch.

- anv, regression: Invisibly blinking cliffs & rocks in Satisfactory DX12 on BMG

- vk/overlay: output_file option failing

- [bisected, LNL] brw: 341e5117ecbc (“brw/nir: Treat load_const as convergent”) regresses arb_gpu_shader5-interpolateAtOffset on LNL

- vulkan regression mesa 24.3.4 to 25.0.0.rc3 with broadcom

- radv: nir_opt_varyings.c:2766: deduplicate_outputs: Assertion `list_index == 0’ failed.

- vulkan/wsi: memory leak from wsi_CreateSwapchainKHR

## Changes

Aaron Ruby (2):

- gfxstream: Make the virtgpu device discovery for LinuxVirtGpu more robust

- gfxstream: Add common interfaces in the VirtGpuDevice to query DrmInfo and PciBusInfo

Alyssa Rosenzweig (4):

- nir/lower_blend: refactor logicop variables

- nir/lower_blend: disable logic ops for unsupported formats

- panfrost: invert and rename no_ubo_to_push flag

- panfrost: do not push “true” UBOs

Benjamin Lee (2):

- panvk/csf: fix uninitialized read in utrace_clone_init_builder

- panfrost/pps: fix omitting several counters

Benjamin Otte (1):

- lavapipe: Don’t advertise support for multiplane drm formats

Boris Brezillon (2):

- vulkan/state: Fix input attachment map state initialization/copy

- vk/pass: Add input attachment location info

Caio Oliveira (1):

- nir/load_store_vectorize: Skip new bit-sizes that are unaligned with high_offset

Caterina Shablia (2):

- panfrost: don’t overwrite push uniforms and sysvals UBO with user’s UBO

- panfrost: update nr_uniform_buffers before dispatching XFB

Connor Abbott (1):

- tu: Fix layer_count with dynamic rendering + multiview

David Rosca (4):

- radeonsi/vcn: Disable AV1 unidir compound with rate control

- radv/video: Fix msg header total size

- radv/video: Fix encode session info for VCN3+

- radeonsi/vpe: Use float division to get scaling ratio

Eric Engestrom (7):

- docs: add sha sum for 25.0.3

- [25.0 only] update more ci expectations

- .pick_status.json: Update to 7c5389695bdf106acaab6ccc69535f25c1d7a8e6

- ci: rename ci-tron priority tag to avoid conflict with the generic fdo runners

- .pick_status.json: Update to 2f00daf67a7990da68dfc4a8e5f2019daecb7a59

- .pick_status.json: Update to 58321cf2e57279079bf742be1063ac2900ea2436

- .pick_status.json: Update to 555821ff93118d4a6ea441127cd0427a95743d47

Eric R. Smith (2):

- panfrost,lima: use index size in panfrost minmax_cache

- panfrost: fix transaction elimination crc valid calculation

Erik Faye-Lund (4):

- panfrost: fixup typo in 16x sample-pattern

- nir/lower_tex: use texture_mask instead of shifting on use

- panvk: set shared_addr_format

- panvk: claim official conformance on v10

Faith Ekstrand (3):

- nak: Allow predicates in nir_intrinsic_as_uniform

- nvk/nvkmd: Check the correct flag for the Kepler GART workaround

- nil: Multiply by array_stride_B instead of adding

Felix DeGrood (1):

- vk/overlay-layer: fix regression in non-control pathway

Georg Lehmann (2):

- spirv: clamp/sign-extend non 32bit ldexp exponents

- spirv: fix cooperative matrix by value function params

Gurchetan Singh (3):

- gfxstream: check device exists before using it

- gfxstream: refactor device initialization

- gfxstream: follow the semantics desired by distro VK loader

Ian Romanick (4):

- brw/algebraic: Constant folding for BROADCAST and SHUFFLE

- brw/nir: Fix source handling of nir_intrinsic_load_barycentric_at_offset

- brw/algebraic: Optimize derivative of convergent value

- brw/nir: Use offset() for all uses of offs in emit_pixel_interpolater_alu_at_offset

Jan Alexander Steffens (heftig) (1):

- gfxstream: Use proper log format for 32-bit Vulkan

Job Noorman (1):

- ir3/ra: assign interval offsets to new defs after shared RA

Jose Maria Casanova Crespo (1):

- v3dv: avoid TFU reading unmapped pages beyond the end of the buffers

Juan A. Suarez Romero (1):

- v3dv: don’t check if DRM device is master

Kenneth Graunke (4):

- brw: Track the largest VGRF size in liveness analysis

- brw: Use live->max_vgrf_size in register coalescing

- brw: Use live->max_vgrf_size in pre-RA scheduling

- brw: Don’t assert about MAX_VGRF_SIZE in brw_opt_split_virtual_grfs()

Lars-Ivar Hesselberg Simonsen (2):

- panvk: Add barrier for interleaved ZS copy cmds

- vk/sync: Fix execution only barriers

Lionel Landwerlin (3):

- brw: fix shuffle with scalar/uniform index

- anv: fix self dependency computation

- brw: fix Wa_22013689345 emission

Marek Olšák (5):

- radeonsi: work around a primitive restart bug on gfx10-10.3

- radeonsi: make si_shader_selector::main_shader_part_* an iterable union

- radeonsi: add ACO-specific main shader parts

- ac/surface: make gfx12_estimate_size reusable by gfx6

- ac/surface: select 3D tile mode without overallocating too much for gfx6-8

Mike Blumenkrantz (4):

- gallium/util: check nr_samples in pipe_surface_equal()

- tu: check for valid descriptor set when binding descriptors

- zink: don’t set shared block stride without KHR_workgroup_memory_explicit_layout

- zink: stop setting ArrayStride on image arrays

Natalie Vock (1):

- aco: Make private_segment_buffer/scratch_offset per-resume

Patrick Lerda (9):

- r600: move stores to the end of shader when required

- r600: fix textures with swizzles limited to zero and one

- r600: fallback to util_blitter_draw_rectangle when required

- r600: fix pa_su_vtx_cntl rounding mode

- r600: fix points clipping

- i915: fix i915_set_vertex_buffers() related refcnt imbalance and remove redundancies

- i915: fix slab_create() related memory leaks

- i915: fix nir_to_tgsi() related memory leak

- i915: fix draw_create_fragment_shader() related memory leak

Pierre-Eric Pelloux-Prayer (1):

- winsys/amdgpu: disable VM_ALWAYS_VALID

Rob Clark (1):

- tu/vdrm: Fix userspace fence cmds

Ryan Mckeever (1):

- pan/format: Update format flags to follow HW spec

Samuel Pitoiset (4):

- radv: fix ignoring conditional rendering with vkCmdResolveImage()

- radv: determine if HiZ/HiS is enabled earlier on GFX12

- radv: add a workaround for buggy HiZ/HiS on GFX12

- radv: apply the workaround for buggy HiZ/HiS on GFX12 for DGC

Sviatoslav Peleshko (1):

- vulkan/wsi/headless: Remove unnecessary wsi_configure_image()

Tapani Pälli (3):

- compiler/glsl: check that bias is not used outside fragment stage

- mesa: clamp texbuf query size to MAX_TEXTURE_BUFFER_SIZE

- mesa: various fixes for ClearTexImage/ClearTexSubImage

Timothy Arceri (1):

- glsl: fix regression in ubo cloning

Timur Kristóf (4):

- nir/xfb: Preserve some xfb information when gathering from intrinsics.

- nir/opt_varyings: Fix assertion when deduplicating TCS outputs.

- radv: Use buffers_written mask when gathering XFB info.

- radv: Call nir_opt_undef too after nir_opt_varyings.