mesa/src/compiler
Kenneth Graunke 95bc42af74 nir: Use load_global_constant for reorderable nir_var_mem_global access
The main difference between load_global and load_global_constant is that
the latter can be reordered arbitrarily.  If the access being lowered is
already tagged as being reorderable, then we can preserve that by using
the load_global_constant intrinsics instead of load_global.  This gives
us more flexibility.

On Intel, this lets us use the load_global_constant_uniform_block_intel
intrinsic for doing convergent block loads in more cases.  This nets us
significant reductions in spill/fills: Borderlands 3 on Lunarlake sees
spills/fills reduced by 53%.  Alchemist sees a 13% reduction.

Improves performance of Borderlands 3 DX12 on Intel Battlemage by
around 44%.  Improves Hogwarts Legacy by around 14%.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31995>
2024-11-18 12:55:47 +00:00
..
clc clc: add mesa_clc tool 2024-11-01 13:25:37 -07:00
glsl glsl: add a helper for duplicated code calling nir_opt_varyings 2024-11-18 11:25:18 +00:00
isaspec build: pass licensing information in SPDX form 2024-06-29 12:42:49 -07:00
nir nir: Use load_global_constant for reorderable nir_var_mem_global access 2024-11-18 12:55:47 +00:00
rust compiler/rust: drop duplicated bindgen check 2024-11-14 20:12:31 +00:00
spirv vtn: handle struct kernel arguments passed by value 2024-11-18 12:12:21 +00:00
builtin_types.py compiler/types: Add multisample vimage/vtexture types 2024-08-27 15:06:16 +00:00
builtin_types_c.py util,vulkan,mesa,compiler: Generate source files with utf8 encoding from mako template 2023-12-07 12:41:07 +00:00
builtin_types_h.py util,vulkan,mesa,compiler: Generate source files with utf8 encoding from mako template 2023-12-07 12:41:07 +00:00
glsl_types.c compiler/types: Add multisample vimage/vtexture types 2024-08-27 15:06:16 +00:00
glsl_types.h nir/lower_vars_to_scratch: calculate threshold-limited variable size separately 2024-08-07 14:32:28 +00:00
meson.build nak: Move bitset to compiler crate 2024-08-07 21:08:18 +00:00
shader_enums.c nir: add SYSTEM_VALUE_PIXEL_COORD 2024-11-04 12:34:30 +00:00
shader_enums.h aco,ac/nir: flag loads to use smem in NIR 2024-11-13 12:59:26 +00:00
shader_info.h nir: add shader_info::tess::tcs_same_invocation_inputs_read(_indirect) 2024-10-21 18:53:51 +00:00