mesa/src/intel/compiler
Lionel Landwerlin aa494cbacf brw: align spilling offsets to physical register sizes
In commit fe3d90aedf ("intel/fs/xe2+: Fix calculation of spill message
width for Xe2 regs.") we aligned the width of scratch messages to
physical register sizes (32B prior to Xe2, 64B for Xe2+).

But our spilling offsets are computed using the register allocations
sizes which are in units of 32B. That means on Xe2, you can end up
spilling a virtual register allocated at 32B (which we use for surface
state computations with exec_all) and then the spilling of that
register will be emitted in SIMD16, having the upper 8 lanes
overwriting the next spilled register.

We could potentially limit spills to SIMD8 messages on Xe2 (only
writing 32B of data), but we're also unlikely to have all 32B virtual
register spilled next to one another. And if not tightly packed, we
would have 64B registers stored on 2 different cachelines which sounds
inefficient.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: fe3d90aedf ("intel/fs/xe2+: Fix calculation of spill message width for Xe2 regs.")
Backport-to: 24.2
Reviewed-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30983>
2024-09-04 23:05:31 +00:00
..
elk compiler: Allow derivative_group to be used for all stages in shader_info 2024-09-03 20:03:18 +00:00
tests intel/brw: Remove assembler tests for Gfx8- 2024-02-24 02:10:56 +00:00
brw_asm.c intel/brw: Also return the size of the assembled shader 2024-08-14 03:03:46 +00:00
brw_asm.h intel/brw: Also return the size of the assembled shader 2024-08-14 03:03:46 +00:00
brw_asm_internal.h intel/brw: Split off assembler logic into library 2024-07-12 19:34:23 +00:00
brw_asm_tool.c intel/brw: Split off assembler logic into library 2024-07-12 19:34:23 +00:00
brw_cfg.cpp intel/brw: Add a file parameter to idom_tree::dump() 2024-08-22 22:54:45 +00:00
brw_cfg.h intel/brw: Add a file parameter to idom_tree::dump() 2024-08-22 22:54:45 +00:00
brw_compile_bs.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_compile_cs.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_compile_fs.cpp intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_compile_gs.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_compile_mesh.cpp brw: switch mesh/task URB fence prior to EOT to GPU 2024-08-27 13:38:14 +00:00
brw_compile_tcs.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_compile_tes.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_compile_vs.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_compiler.c intel/brw/xe2: Allow int64 conversions 2024-08-21 20:16:00 +00:00
brw_compiler.h brw: remove unused prog_data field 2024-08-22 19:44:40 +00:00
brw_debug_recompile.c intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_def_analysis.cpp intel/brw: Track the number of uses of each def in def_analysis 2024-06-18 09:02:25 +00:00
brw_device_sha1_gen_c.py intel/compiler: drop unused ray-tracing fields from cache hash 2024-03-22 00:01:28 +00:00
brw_disasm.c intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_disasm.h intel/compiler: Merge intel_disasm.[ch] into corresponding brw files 2024-02-15 09:26:46 +00:00
brw_disasm_info.cpp intel/brw: Simplify fs_inst annotation 2024-08-28 03:59:50 +00:00
brw_disasm_info.h intel/brw: Simplify fs_inst annotation 2024-08-28 03:59:50 +00:00
brw_disasm_tool.c intel/brw: Remove Gfx8- code from disassembler 2024-02-28 05:45:38 +00:00
brw_eu.c brw,elk: Fix opening flags on dumping shader binaries 2024-08-27 08:26:08 +00:00
brw_eu.h intel/brw: Get rid of the lsc_msg_desc_wcmask helper 2024-08-27 09:25:59 +00:00
brw_eu_compact.c intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_eu_defines.h intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_eu_emit.c brw: add a comment what Gfx12.5 URB fences 2024-08-27 13:38:14 +00:00
brw_eu_validate.c intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_fs.cpp intel/brw: Copy prop from raw integer moves with mismatched types 2024-08-30 03:39:31 +00:00
brw_fs.h intel/brw: Replace predicated break optimization with a simple peephole 2024-08-05 19:17:55 -07:00
brw_fs_bank_conflicts.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_builder.h intel/brw: Remove special treatment for 2-src in emit() helper 2024-08-30 04:33:47 +00:00
brw_fs_cmod_propagation.cpp intel/brw: Relax is_partial_write check in cmod propagation 2024-08-30 03:39:31 +00:00
brw_fs_combine_constants.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_fs_copy_propagation.cpp intel/brw: Enable constant propagation for a couple more logical sends 2024-08-30 03:39:31 +00:00
brw_fs_cse.cpp intel/brw: Use CSE for LOAD_SUBGROUP_INVOCATION 2024-08-08 18:20:49 +00:00
brw_fs_dead_code_eliminate.cpp intel/brw: Eliminate dead flag writes 2024-08-09 14:25:54 -07:00
brw_fs_generator.cpp intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_fs_live_variables.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_live_variables.h intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower.cpp intel/brw: Simplify fs_inst annotation 2024-08-28 03:59:50 +00:00
brw_fs_lower_dpas.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower_integer_multiplication.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower_pack.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower_regioning.cpp intel/brw: Disallow scalar byte to float conversions on DG2+ 2024-07-18 18:51:35 +00:00
brw_fs_lower_simd_width.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_nir.cpp intel/brw: load_offset cannot be constant on this path 2024-08-30 03:39:31 +00:00
brw_fs_opt.cpp intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_fs_opt_algebraic.cpp intel/brw: Rename fs_reg_* helpers to brw_reg_* 2024-07-03 02:53:19 +00:00
brw_fs_opt_virtual_grfs.cpp intel/brw: allocate large table in the heap instead of the stack 2024-07-03 12:10:28 +00:00
brw_fs_reg_allocate.cpp brw: align spilling offsets to physical register sizes 2024-09-04 23:05:31 +00:00
brw_fs_register_coalesce.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_saturate_propagation.cpp intel/brw: Use def analysis for simple cases of saturate propagation 2024-08-09 14:26:05 -07:00
brw_fs_scoreboard.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_thread_payload.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_validate.cpp intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_fs_visitor.cpp intel/brw: Move interp_reg and per_primitive_reg out of fs_visitor 2024-07-25 15:37:13 +00:00
brw_fs_workaround.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_gram.y intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_inst.h intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
brw_ir.h intel/brw: Fold backend_reg into fs_reg 2024-03-01 17:52:09 +00:00
brw_ir_allocator.h intel/compiler,intel/blorp,intel/vulkan: decouple vulkan driver and compiler from gallium 2023-08-03 22:00:15 +00:00
brw_ir_analysis.h
brw_ir_fs.h intel/brw: Copy prop from raw integer moves with mismatched types 2024-08-30 03:39:31 +00:00
brw_ir_performance.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_ir_performance.h intel/brw: Fold backend_shader into fs_visitor 2024-02-29 19:28:05 +00:00
brw_isa_info.h
brw_kernel.c intel-clc: missing printf lowering 2024-08-06 17:55:18 +00:00
brw_kernel.h intel-clc: Use correct set of nir_options when building for Gfx8 2024-02-24 00:24:32 +00:00
brw_lex.l intel/brw: Split off assembler logic into library 2024-07-12 19:34:23 +00:00
brw_lower_logical_sends.cpp intel/brw: Get rid of the lsc_msg_desc_wcmask helper 2024-08-27 09:25:59 +00:00
brw_nir.c intel/brw: Unconditionally run optimizations after nir_opt_uniform_subgroup 2024-08-30 03:39:31 +00:00
brw_nir.h intel/brw: Move fsat instructions closer to the source 2024-08-09 14:26:10 -07:00
brw_nir_analyze_ubo_ranges.c intel/brw/xe2: Update brw_nir_analyze_ubo_ranges to account for 512b physical registers 2024-04-01 00:00:03 +00:00
brw_nir_lower_alpha_to_coverage.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
brw_nir_lower_cooperative_matrix.c intel/brw/xe2+: Allow vec16 for cooperative matrix 2024-06-25 14:17:47 -07:00
brw_nir_lower_cs_intrinsics.c compiler: Allow derivative_group to be used for all stages in shader_info 2024-09-03 20:03:18 +00:00
brw_nir_lower_fsign.py intel/brw: Use range analysis to optimize fsign 2024-05-14 01:28:21 +00:00
brw_nir_lower_intersection_shader.c intel/rt: fix terminateOnFirstHit handling 2024-08-05 21:43:36 +00:00
brw_nir_lower_ray_queries.c intel/nir: only consider ray query variables in lowering 2024-02-24 12:56:30 +00:00
brw_nir_lower_rt_intrinsics.c brw/rt: fix ray_object_(direction|origin) for closest-hit shaders 2024-08-13 10:28:50 +00:00
brw_nir_lower_shader_calls.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
brw_nir_lower_storage_image.c intel/brw: Drop image_{load,store}_raw_intel handling 2024-08-09 07:20:08 +00:00
brw_nir_opt_fsat.c intel/brw: Move fsat instructions closer to the source 2024-08-09 14:26:10 -07:00
brw_nir_rt.c treewide: use nir_def_replace sometimes 2024-06-21 15:36:56 +00:00
brw_nir_rt.h anv: support VK_PIPELINE_CREATE_RAY_TRACING_SKIP_* 2022-10-20 00:03:55 +00:00
brw_nir_rt_builder.h intel: Fix bad align_offset on global_constant_uniform_block_intel 2024-08-21 20:44:57 +00:00
brw_nir_trig_workarounds.py
brw_packed_float.c
brw_prim.h
brw_print.cpp intel/brw: Print blocks in brw_print_instructions_to_file() 2024-08-22 22:54:45 +00:00
brw_private.h intel/brw: fix subgroup size of geometry stages for lnl+ 2024-05-14 23:13:37 +00:00
brw_reg.h intel/brw: Pack brw_reg struct 2024-08-28 03:59:50 +00:00
brw_reg_type.c intel/brw: Rename brw_reg_type_to_hw_type to brw_type_encode 2024-04-25 11:41:48 +00:00
brw_reg_type.h intel/brw: Make a helper for finding the largest of two types 2024-04-29 07:51:45 +00:00
brw_rt.h intel: Use ALIGN_POT instead of ALIGN inside macro define 2024-01-03 12:46:10 +00:00
brw_schedule_instructions.cpp intel/brw: Only force g0's liveness to be the whole program if spilling 2024-08-01 16:37:34 -07:00
brw_shader.cpp intel/brw: Move remaining compile stages to their own files 2024-07-25 15:37:13 +00:00
brw_simd_selection.cpp intel/brw: fix subgroup size of geometry stages for lnl+ 2024-05-14 23:13:37 +00:00
brw_vue_map.c intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
intel_clc.c intel/clc: Free disk_cache 2024-07-24 20:46:28 +00:00
intel_gfx_ver_enum.h intel/compiler: Rename brw_gfx_ver_enum.h to intel_gfx_ver_enum.h 2024-02-16 22:35:05 +00:00
intel_nir.c intel/compiler: Rename the passes and files related to intel_nir.h 2024-02-16 22:35:05 +00:00
intel_nir.h intel/nir: add printf lowering 2024-05-15 13:13:38 +00:00
intel_nir_blockify_uniform_loads.c intel/nir: remove load_global_const_block_intel intrinsic 2024-08-16 11:12:39 +00:00
intel_nir_clamp_image_1d_2d_array_sizes.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_clamp_per_vertex_loads.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_conversions.c intel/nir: Don't needlessly split u2f16 for nir_type_uint32 2024-07-11 02:37:05 -07:00
intel_nir_lower_non_uniform_barycentric_at_sample.c intel/compiler: Ensure load_barycentric_at_sample and load_interpolated_input remain together 2024-04-04 23:42:27 +00:00
intel_nir_lower_non_uniform_resource_intel.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_printf.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_shading_rate_output.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_sparse.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_texture.c intel/compiler: Pack texture LOD and offset to a single 32-bit value 2024-02-27 00:22:46 +00:00
intel_nir_opt_peephole_ffma.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_opt_peephole_imul32x16.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_tcs_workarounds.c intel/nir: Set src_type on TCS quads workaround store_output 2024-05-02 13:58:21 -07:00
intel_shader_enums.h intel/compiler: Use "intel" prefix for walk_order enum 2024-02-21 00:38:35 +00:00
meson.build intel/brw: Move fsat instructions closer to the source 2024-08-09 14:26:10 -07:00
test_eu_compact.cpp intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
test_eu_validate.cpp intel/brw: Remove long register file names 2024-08-25 22:08:14 +00:00
test_fs_cmod_propagation.cpp intel/brw: Relax is_partial_write check in cmod propagation 2024-08-30 03:39:31 +00:00
test_fs_combine_constants.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
test_fs_copy_propagation.cpp intel/brw: Copy prop from raw integer moves with mismatched types 2024-08-30 03:39:31 +00:00
test_fs_cse.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
test_fs_saturate_propagation.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
test_fs_scoreboard.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
test_simd_selection.cpp intel: Remove brw_ prefix from process debug function 2024-02-16 22:35:05 +00:00
test_vf_float_conversions.cpp