- Improved streaming upload performance by reusing completed GART buffers
and skipping empty buffer-cache buckets, reducing allocation stalls and
CPU overhead. Although changes may sound minor, measured performance
gains (tested on RX570/x1000) are:
- Irrlicht Engine: over 2x faster (490 FPS vs 220 FPS in 02.Quake3Map)
- Doom3: +4 FPS (now 33.5 FPS in the timedemo on X1000).
- Quake3: +30 FPS (now 190 FPS; GL4ES gives 125 with the same config).
- GlMark2 and FixedGL benchmarks: much better non-VBO performance.
- Fixed endian encoding of ACO shader floating-point modes. Previously,
incorrect rounding could cause small but potentially noticeable visual
differences in some effects.
- Fixed endian encoding and byte ordering of initial HTILE depth metadata
- Added missing endian conversion for 16-bit and 32-bit float textures.
Thanks to Capehill for point on an unrelated issue that led me to this!
- Fixed missing endian conversion when shaders read uniform buffers and
when preparing indirect draw and compute-dispatch commands for GPU run
Thanks to Falke for report!
- Added zero-initialization of new allocated native depth/stencil buffers
This fixing Quake3 startup-menu minor corruption on Polaris.
- Added Zstd-compressed shader caching (enabled by default) in PROGDIR:
mesa_shader_cache is the default, and mesa_shader_cache_db can be used
by setting MESA_DISK_CACHE_DATABASE to 1. To fully disable caching, set
MESA_SHADER_CACHE_DISABLE to 1. For more info about Mesa environment
variables, see the upstream docs.
- Reduced mesa.library by about 2 MB by removing unused code and data,but
shader cache support added about 1 MB, so it is now 28.5 MB instead of
29.7 MB in Mesa 1.1.
- Fixed excess memory retained after application exit: corrected shader-
type cache ownership, freed leaked display-list data and released empty
heap blocks.
- Fixed incorrect GPU vertex reuse & deallocation setup in the AOS4 init
path (with CLEAR_STATE disabled), which could cause rare random quads &
small graphical glitches.
- Backporting relevant upstream Mesa fixes:
From Mesa 26.1.8:
- VS synchronization: retain required GPU waits.
- Buffer copies/clears: handle partial final chunks correctly.
- Image-buffer descriptors: update GPU addresses after storage changes
- ACO split loads: preserve data from every loaded fragment.
- Invocation reads: keep conditional execution with variable lane IDs
- NIR expression matching: reset floating-point rules between attempts
- SPIR-V interfaces: preserve explicit input/output locations.
- GLSL linking: correct SPIR-V built-in interface locations.
- Pipeline validation: safely handle SPIR-V built-ins.
- Device LUID queries: fix buffer size and missing-callback handling.
From Mesa 26.1.7:
- Viewport clipping: fix guardbands for large or displaced viewports.
- Numeric bounds: avoid invalid float-to-integer conversions.
- Shader pointers: handle dereferences across merged control flow.
- Loop conversion: correctly report pointer-related changes.
- Memory vectorization: maintain correct bookkeeping around barriers.
- Memory addresses: update vectorization keys when importing prior ops
- ACO optimization: fix removal of redundant memory-offset alignment.
From Mesa 26.1.6:
- Uniform buffers: correct ranges for split component loads.
- Atomic operations: preserve writes whose values atomics read.
- Pointer casts: correct uniform/varying tracking.
- Loop optimization: prevent moves that misplace break/continue jumps.
- Packed-byte arithmetic: recognize value bounds for more optimization