mesa/src/intel/compiler
Ian Romanick 907cc49c32
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
brw: Calcuate divergence before brw_from_nir
We were previously assuming that potentially stale divergence data was
valid. On some paths the register pressure estimator would recalculate
this, but, as is obvious from the results, not always.

v2: Add an assertion in brw_from_nir_emit_impl to ensure we don't end
up in this situation again.

v3: Call nir_divergence_analysis from
brw_nir_lower_deferred_urb_writes. This fixes assertion failures (the
assertion added in v2) in basically every graphics shader. The
altnerative was to call it from brw_compile_vs, brw_compile_gs, and
brw_compile_tes.

shader-db:

All Intel platformms had similar results. (Lunar Lake shown)
total instructions in shared programs: 17050403 -> 17054033 (0.02%)
instructions in affected programs: 296344 -> 299974 (1.22%)
helped: 0 / HURT: 376

total cycles in shared programs: 876063126 -> 875817316 (-0.03%)
cycles in affected programs: 78627328 -> 78381518 (-0.31%)
helped: 91 / HURT: 276

LOST:   1
GAINED: 10

fossil-db:

All Intel platformms had similar results. (Lunar Lake shown)
Totals:
Instrs: 913770429 -> 916075391 (+0.25%); split: -0.00%, +0.26%
CodeSize: 14647414640 -> 14726176320 (+0.54%); split: -0.02%, +0.56%
Cycle count: 102308091527 -> 102290664775 (-0.02%); split: -0.26%, +0.24%
Spill count: 3469632 -> 3469124 (-0.01%); split: -0.08%, +0.07%
Fill count: 5007038 -> 4998674 (-0.17%); split: -0.51%, +0.34%
Max live registers: 192568853 -> 192595355 (+0.01%); split: -0.00%, +0.02%
Max dispatch width: 48713168 -> 48712880 (-0.00%); split: +0.00%, -0.00%
Non SSA regs after NIR: 140252767 -> 140253718 (+0.00%)

Totals from 223099 (11.11% of 2007586) affected shaders:
Instrs: 314077245 -> 316382207 (+0.73%); split: -0.01%, +0.75%
CodeSize: 5335583824 -> 5414345504 (+1.48%); split: -0.06%, +1.54%
Cycle count: 45868025821 -> 45850599069 (-0.04%); split: -0.58%, +0.54%
Spill count: 2062649 -> 2062141 (-0.02%); split: -0.14%, +0.11%
Fill count: 3343019 -> 3334655 (-0.25%); split: -0.76%, +0.51%
Max live registers: 36762498 -> 36789000 (+0.07%); split: -0.02%, +0.09%
Max dispatch width: 5542224 -> 5541936 (-0.01%); split: +0.03%, -0.03%
Non SSA regs after NIR: 43727142 -> 43728093 (+0.00%)

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> [v1]
Fixes: 1bff4f93ca ("brw: Basic infrastructure to store convergent values as scalars")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41370>
2026-05-11 21:03:19 +00:00
..
brw brw: Calcuate divergence before brw_from_nir 2026-05-11 21:03:19 +00:00
elk intel/elk: Remove dead TXL_LZ/TXF_LZ opcodes 2026-04-17 15:13:00 +00:00
jay iris: Implement force_dual_color_blend_by_location via NIR 2026-05-07 08:29:40 +00:00
brw_device_sha1_gen_c.py Rename sha1_* and sha_* names to blake3_* 2026-03-23 07:03:28 +00:00
brw_list.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_gfx_ver_enum.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir.c intel/compiler: Use nir_split_conversions() 2025-04-07 17:45:21 -05:00
intel_nir.h intel/nir: Make intel_nir_lower_sparse work for either brw or jay 2026-04-10 18:21:21 +00:00
intel_nir_blockify_uniform_loads.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_clamp_image_1d_2d_array_sizes.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_clamp_per_vertex_loads.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_lower_non_uniform_barycentric_at_sample.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_lower_non_uniform_resource_intel.c nir: rename nir_src_parent_instr to nir_src_use_instr 2026-05-06 17:09:22 +00:00
intel_nir_lower_printf.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_lower_shading_rate_output.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_lower_sparse.c intel/nir: fix sparse shadow comparison for BRW 2026-05-07 23:47:51 +00:00
intel_nir_opt_peephole_ffma.c nir: rename nir_src_parent_instr to nir_src_use_instr 2026-05-06 17:09:22 +00:00
intel_nir_opt_peephole_imul32x16.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_nir_tcs_workarounds.c nir: add and use block predecessor helpers 2026-04-08 15:06:32 +00:00
intel_prim.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
intel_shader_enums.h anv/brw: add conservative raster on/off to FS_CONFIG 2026-05-11 18:15:50 +00:00
meson.build intel: add Jay 2026-04-10 18:21:21 +00:00