mesa/src
Jose Maria Casanova Crespo 5a575cca8e v3d: improve liveness analysis for packed partial writes
The liveness analysis treated any output-pack write (D.l /
D.h) as a partial definition, refusing to mark the variable as
defined in the block. That extended live ranges all the way to the
top of the program for every f16 temporary, artificially increasing
register pressure.

D.l/h only modifies the written bits, leaving the unwritten half bits
preserved. So a pack write is a full definition whenever no
consumer ever observes the unwritten half, or when both halves are
written before the variable is used.

This scans every instruction into a per-temp read-flag array
(TEMP_READ_LO / TEMP_READ_HI, with FULL = LO | HI) by inspecting
each source's input unpack. And recognizes two patterns as full
definitions:

 * Both PACK_L and PACK_H written unconditionally in the same block.
 * The instruction's pack writes the half that covers every observed
   read of the variable across the program (the unwritten half is never
   read).

Assisted-by: Claude Opus 4.7
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41810>
2026-06-04 13:29:39 +00:00
..
amd radv: don't leave SPI_PS_INPUT_ENA uninitialized with NULL PS to fix a hang 2026-06-03 18:25:19 +00:00
android_stub android_stub: purge unused log utils 2026-05-01 20:23:23 +00:00
asahi hk: Add heap_memory_percent driconf support 2026-06-01 17:32:50 +00:00
broadcom v3d: improve liveness analysis for packed partial writes 2026-06-04 13:29:39 +00:00
c11
compiler kk: Fence read-write images after write 2026-06-04 03:24:23 -07:00
drm-shim drm-shim: fix shim on GLX 2026-04-14 12:06:10 +00:00
egl egl/gbm: Eliminate max_age local variable 2026-05-29 16:38:01 +00:00
etnaviv etnaviv/ml: derive stride-2 destriding offsets from padding 2026-06-02 08:13:11 +00:00
freedreno tu: add option to override the build ID 2026-06-04 12:44:13 +00:00
gallium v3d: move nir_lower_frexp after nir_lower_bit_size 2026-06-04 13:29:38 +00:00
gbm gbm: Replace VER_MIN with common MIN2 2026-04-30 13:00:03 +00:00
getopt
gfxstream gfxstream/platform: add missing inc_include to platform_virtgpu build 2026-06-03 21:35:50 +00:00
glx glx/windows: Drop static from driwindowsCreateScreen() 2026-05-18 13:33:35 +00:00
gtest
imagination pvr: Fix load-op shader when loading from a 2d image view of a 3d image 2026-06-03 11:12:42 +00:00
imgui imgui: update copy and port all tools using it 2026-04-30 10:59:45 +00:00
intel anv: skip writing xfb buffer if we get null information 2026-06-04 05:30:22 +00:00
kosmickrisp kk: Advertise additional tessellation dynamic state 2026-06-04 12:29:14 +00:00
loader loader: check if the kernel driver is amdgpu 2026-05-27 10:19:50 +00:00
mesa mesa: Allow GL_TEXTURE_IMMUTABLE_LEVELS query on GLES3 2026-06-03 21:53:19 +00:00
microsoft vulkan: implement VK_EXT_debug_marker 2026-06-01 15:31:38 +00:00
nouveau nak: Simplify our SmallVec usage 2026-06-03 18:50:43 +00:00
panfrost panvk: report DRM format modifiers through List2EXT 2026-06-03 14:21:00 +00:00
poly poly: Fix range used for index unroll bounds checks 2026-05-26 10:39:00 +00:00
tool pps: Re-emit time clock_sync more regularly 2026-05-06 21:37:15 +00:00
util util: Add runtime parser for boolean lookup tables 2026-06-03 15:23:20 +00:00
virtio vulkan: implement VK_EXT_debug_marker 2026-06-01 15:31:38 +00:00
vulkan Rename the CACHE_LINE_SIZE define to MESA_CACHE_LINE_SIZE 2026-06-02 20:04:20 +00:00
x11 meson: Add support for buidling zink + Turnip/KGSL 2026-03-31 15:00:29 +00:00
.clang-format intel: add Jay 2026-04-10 18:21:21 +00:00
meson.build gallium/dril: Don't use gbm if there is no gbm configured 2026-02-17 08:24:02 +00:00