mesa/src/intel/vulkan
Lionel Landwerlin 487586fefa anv: implement inline parameter promotion from push constants
Push constants on bindless stages of Gfx12.5+ don't get the data
delivered in the registers automatically. Instead the shader needs to
load the data with SEND messages.

Those stages do get a single InlineParameter 32B block of data
delivered into the EU. We can use that to promote some of the push
constant data that has to be pulled otherwise.

The driver will try to promote all push constant data (app + driver
values) if it can, if it can't it'll try to promote only the driver
values (usually a shader will only use a few driver values). If even
the drivers values won't fit, give up and don't use the inline
parameter at all.

LNL internal fossil-db:

Totals from 315738 (20.08% of 1572649) affected shaders:
Instrs: 155053691 -> 154920901 (-0.09%); split: -0.09%, +0.00%
CodeSize: 2578204272 -> 2574991568 (-0.12%); split: -0.15%, +0.02%
Send messages: 8235628 -> 8184485 (-0.62%); split: -0.62%, +0.00%
Cycle count: 43911938816 -> 43901857748 (-0.02%); split: -0.05%, +0.03%
Spill count: 481329 -> 473185 (-1.69%); split: -1.82%, +0.13%
Fill count: 405617 -> 399243 (-1.57%); split: -1.86%, +0.28%
Max live registers: 34309395 -> 34309300 (-0.00%); split: -0.00%, +0.00%
Max dispatch width: 8298224 -> 8299168 (+0.01%)
Non SSA regs after NIR: 18492887 -> 17631285 (-4.66%); split: -4.73%, +0.08%

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39405>
2026-02-25 10:44:09 +00:00
..
bvh anv: Mark RootNodeOffset at 256B always 2026-01-22 23:20:04 +00:00
i915 anv: Support virtio-gpu native context 2026-02-06 00:15:37 +00:00
layers anv: add furmark workaround layer 2025-11-28 09:26:41 +00:00
tests anv/tests: Add a slab test to cover the memory leak issue. 2026-01-08 14:21:24 +00:00
xe anv/xe: move special WaitIdle optimization to submission path 2026-01-29 16:03:26 +00:00
anv_allocator.c anv: remove old comment related to pre softpin platforms 2026-02-25 10:44:03 +00:00
anv_android.c anv: Enable compression on importing Android buffers (xe2) 2025-12-09 14:16:43 -08:00
anv_android.h anv: And a new function to consolidate import paths 2025-12-09 14:16:42 -08:00
anv_android_stubs.c anv: And a new function to consolidate import paths 2025-12-09 14:16:42 -08:00
anv_api_version.h anv: advertise Vulkan 1.4 2024-12-02 21:56:39 +00:00
anv_astc_emu.c brw: drop indirection on compiler options 2025-09-18 14:14:08 +00:00
anv_batch_chain.c anv: enable sharing binding table pool programming 2026-02-25 00:17:02 +00:00
anv_blorp.c anv: Fix ASTC emulation sync in CopyImage and CopyBufferToImage 2026-02-25 08:20:57 +00:00
anv_buffer.c anv: Convert DEBUG_SPARSE logging to use mesa_logi 2025-11-15 00:37:53 +00:00
anv_buffer_view.c anv: add support for shaderStorageImageReadWithoutFormat through emulation 2025-06-06 12:28:42 +00:00
anv_cmd_buffer.c anv: optimize binding table flushing 2026-02-25 10:44:05 +00:00
anv_descriptor_set.c anv, brw: Consolidate ex_bso bits to a static devinfo inline 2026-02-16 21:33:47 +00:00
anv_device.c anv: add a drirc to control binding table block size 2026-02-25 00:17:03 +00:00
anv_embedded_sampler.c anv: extract embedded samplers from pipeline_cache 2025-08-01 11:35:04 +00:00
anv_event.c anv: switch events to use 0/!0 values for unsignaled/signaled 2025-12-15 08:25:38 +00:00
anv_formats.c anv: disable ccs modifier reporting when ccs modifiers are disabled 2026-02-23 07:37:29 +00:00
anv_gem.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
anv_gem_stubs.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
anv_genX.h anv: make a helper for push constant allocation 2026-02-25 10:44:04 +00:00
anv_image.c anv: apply the same ccs disabling for Xe3 than Xe2 2026-02-23 07:37:28 +00:00
anv_image_host_copy.c anv: Implement host_image_copy astc emulation on CPU 2025-11-07 12:14:31 +00:00
anv_image_view.c anv: Use variable default value for some images using CLEAR 2026-01-27 18:46:53 +00:00
anv_instance.c anv: add a debug printout for dirty descriptors 2026-02-25 10:44:04 +00:00
anv_internal_kernels.c intel/brw: Use computed push constants size in brw_assign_urb_setup() 2026-02-19 16:53:03 +00:00
anv_internal_kernels.h anv: implement Wa_16011107343/22018402687 for generated draws 2024-11-12 22:48:39 +00:00
anv_kmd_backend.c
anv_kmd_backend.h anv: make device initialization more asynchronous 2024-06-13 08:29:25 +00:00
anv_measure.c anv: rework gfx state emission (again) 2025-08-11 11:14:53 +00:00
anv_measure.h
anv_nir.h anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_nir_apply_pipeline_layout.c anv: track descriptor buffers used & promoted to push constants 2026-02-25 10:44:05 +00:00
anv_nir_compute_push_layout.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_nir_lower_driver_values.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_nir_lower_multiview.c treewide: add & use parent instr helpers 2025-11-12 21:22:13 +00:00
anv_nir_lower_resource_intel.c anv, brw: Consolidate ex_bso bits to a static devinfo inline 2026-02-16 21:33:47 +00:00
anv_nir_lower_ubo_loads.c anv: fixup load_ubo lowering 2025-11-17 20:02:00 +00:00
anv_nir_lower_unaligned_dispatch.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_nir_push_constants_analysis.c anv: use internal surface state on Gfx12.5+ to access descriptor buffers 2026-02-12 16:45:26 +00:00
anv_nir_push_descriptor_analysis.c anv: use internal surface state on Gfx12.5+ to access descriptor buffers 2026-02-12 16:45:26 +00:00
anv_perf.c anv: implement VK_KHR_internally_synchronized_queues 2026-01-29 16:03:26 +00:00
anv_physical_device.c brw: Delete use_bindless_sampler_offset flag 2026-02-16 21:33:48 +00:00
anv_pipeline_cache.c anv: enable debug printfs on internal shaders 2026-01-20 12:19:41 +00:00
anv_private.h anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_queue.c anv/xe: move special WaitIdle optimization to submission path 2026-01-29 16:03:26 +00:00
anv_rmv.c anv: shrink image opaque data 2025-11-25 19:38:53 +00:00
anv_rmv.h anv: remove unused gfx/compute pipeline code 2025-09-05 07:46:20 +00:00
anv_sampler.c anv: rework embedded sampler hashing 2025-07-07 18:53:53 +00:00
anv_shader.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_shader.h anv: fix broken ray tracing dynamic descriptors 2025-12-02 13:25:20 +00:00
anv_shader_compile.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
anv_shader_heap.c anv: Implement RT shader group handle capture/replay 2026-01-29 08:46:50 +00:00
anv_slab_bo.c anv: fix a memory leak in slab allocator. 2025-12-18 18:25:54 +00:00
anv_slab_bo.h anv: Add the base infrastructure to support memory pool 2025-04-30 12:56:39 +00:00
anv_sparse.c anv: shrink image opaque data 2025-11-25 19:38:53 +00:00
anv_util.c anv: add a debug printout for dirty descriptors 2026-02-25 10:44:04 +00:00
anv_utrace.c anv: implement VK_KHR_internally_synchronized_queues 2026-01-29 16:03:26 +00:00
anv_va.c anv: Convert DEBUG_HEAPS logging to use mesa_log 2025-10-31 11:45:47 +00:00
anv_video.c anv/video: remove unsupported feautres for encoders 2026-02-16 10:58:40 +00:00
anv_wsi.c vulkan/wsi/wayland: Correctly map 24bpp format types 2026-02-17 19:25:19 +00:00
av1_tables.h anv: add default av1 tables from media-driver 2025-01-10 21:45:04 +00:00
genX_acceleration_structure.c anv: Avoid dumping BVH before command buffer is submitted 2026-02-05 18:47:10 +00:00
genX_blorp_exec.c anv: optimize binding table flushing 2026-02-25 10:44:05 +00:00
genX_cmd_buffer.c anv: avoid filling PC reason for timestamp u_trace captures 2026-02-25 10:44:06 +00:00
genX_cmd_compute.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
genX_cmd_draw.c anv: implement inline parameter promotion from push constants 2026-02-25 10:44:09 +00:00
genX_cmd_draw_generated_flush.h anv: remove use of emit_apply_pipe_flushes() in various helpers 2025-12-15 08:25:31 +00:00
genX_cmd_draw_generated_indirect.h anv: add tracking of involved stages in pipe flushes 2025-12-15 08:25:32 +00:00
genX_cmd_draw_helpers.h anv: store gfx/compute bound shaders on command buffer state 2025-08-01 11:35:08 +00:00
genX_cmd_video.c anv: use workaround framework for Wa_1508208842 2026-02-02 19:40:26 +00:00
genX_cmd_video_enc.c anv/video: set Sad Qp Lambda values properly for H265 encoder. 2026-02-16 10:58:40 +00:00
genX_gfx_state.c anv: specialize code for Wa_18019110168 2026-02-25 10:44:03 +00:00
genX_gpu_memcpy.c anv: remove use of emit_apply_pipe_flushes() in various helpers 2025-12-15 08:25:31 +00:00
genX_init_state.c anv: program HW to gather push constants at 3DSTATE_CONSTANT parsing time on Gfx9 2026-02-25 10:44:03 +00:00
genX_internal_kernels.c intel: rework push constant handling 2026-01-09 14:19:52 +00:00
genX_mi_builder.h anv: predicate BTP emissions 2026-02-25 00:17:03 +00:00
genX_query.c anv: add tracking of involved stages in pipe flushes 2025-12-15 08:25:32 +00:00
genX_shader.c iris: Move ALT mode handling from brw to iris 2026-02-19 02:51:00 +00:00
genX_simple_shader.c anv: optimize binding table flushing 2026-02-25 10:44:05 +00:00
meson.build anv: use internal surface state on Gfx12.5+ to access descriptor buffers 2026-02-12 16:45:26 +00:00
vp9_tables.h anv: add default vp9 tables from FFMpeg and intel-vaapi-driver 2025-06-13 04:51:51 +00:00