mesa/src/freedreno/ir3
Job Noorman 24cdb0b636
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
ir3: emit descriptor prefetch in block dominated by its sources
Descriptor prefetches may be generated for instructions in control flow.
This means we cannot simply emit prefetches at the end of the preamble
because that may not be dominated by all their sources. This commit uses
the helpers introduced by e7ac1094f6 ("ir3: rematerialize preamble defs
in block dominated by sources") to find the correct block to insert
prefetches.

Fixes NIR validation errors in Dying Light 2.

Signed-off-by: Job Noorman <jnoorman@igalia.com>
Fixes: 4e2a0a5ad0 ("ir3: Add descriptor prefetching optimization on a7xx")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36885>
2025-08-22 05:21:25 +00:00
..
tests ir3/isa: add encoding for scalar predicates 2025-08-20 06:14:02 +00:00
.dir-locals.el
.editorconfig
disasm-a3xx.c ir3/isa: add isaspec definition for movs 2025-06-26 10:22:09 +00:00
instr-a3xx.h ir3/isa: add isaspec definition for movs 2025-06-26 10:22:09 +00:00
ir3.c ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
ir3.h ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
ir3_a4xx.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
ir3_a6xx.c ir3: use offset_shift for SSBO intrinsics 2025-08-20 07:51:30 +00:00
ir3_alias.c ir3: Don't try to use indirect access in the alias table. 2025-08-22 01:04:23 +00:00
ir3_array_to_ssa.c ir3/array_to_ssa: remove trivial all-undef phis 2025-08-19 20:07:34 +00:00
ir3_assembler.c freedreno: Convert to SPDX-License-Identifier instead of pasting whole license 2024-08-28 08:54:00 +00:00
ir3_assembler.h freedreno/computerator: add support for UBOs 2025-07-11 16:01:07 +00:00
ir3_cf.c ir3/cf: add support for movs 2025-06-26 10:22:09 +00:00
ir3_compiler.c ir3: use offset_shift for SSBO intrinsics 2025-08-20 07:51:30 +00:00
ir3_compiler.h ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
ir3_compiler_nir.c nir: make nir_block::predecessors & dom_frontier sets non-malloc'd 2025-08-21 06:13:48 +00:00
ir3_context.c ir3: enable scalar predicates 2025-08-20 06:14:02 +00:00
ir3_context.h build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
ir3_cp.c ir3/cp: disable cat3 hw bug workaround on a6xx+ 2025-07-23 19:08:30 +00:00
ir3_cse.c ir3/cse: add support for mov a0.x/a1.x 2025-03-06 08:47:53 +00:00
ir3_dce.c ir3/dce: support partial writes from collects 2025-01-23 06:26:24 +00:00
ir3_delay.c ir3/a7xx: enable delayed src2 read for all cat3 instructions 2025-01-29 02:19:50 +00:00
ir3_disk_cache.c ir3: add shader bisect debug tool 2025-08-03 09:30:49 +00:00
ir3_dominance.c freedreno: Convert to SPDX-License-Identifier instead of pasting whole license 2024-08-28 08:54:00 +00:00
ir3_image.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
ir3_image.h freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_legalize.c ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
ir3_legalize_relative.c
ir3_lexer.l ir3/isa: add encoding for scalar predicates 2025-08-20 06:14:02 +00:00
ir3_liveness.c freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_lower_parallelcopy.c ir3/a7xx: disable half shared mov quirk 2025-06-26 10:22:09 +00:00
ir3_lower_shared_phi.c ir3: reformat after refactoring in previous commit 2024-12-01 10:21:26 +00:00
ir3_lower_spill.c ir3: reformat after refactoring in previous commit 2024-12-01 10:21:26 +00:00
ir3_lower_subgroups.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
ir3_merge_regs.c ir3: add subreg move optimization 2025-07-04 10:38:36 +00:00
ir3_nir.c Revert "tu: Use nir_opt_reassociate." 2025-08-08 11:10:16 +00:00
ir3_nir.h ir3: use offset_shift for SSBO intrinsics 2025-08-20 07:51:30 +00:00
ir3_nir_analyze_ubo_ranges.c treewide: use nir_def_as_* 2025-08-01 15:34:24 +00:00
ir3_nir_branch_and_or_not.py freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_nir_imul.py freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_nir_lower_64b.c ir3: ingest global addresses as 64b values from NIR 2025-06-18 19:06:32 +00:00
ir3_nir_lower_driver_params_to_ubo.c ir3: Don't lower VS driver params to UBO 2024-10-29 02:34:08 +00:00
ir3_nir_lower_io_offsets.c ir3: use offset_shift for SSBO intrinsics 2025-08-20 07:51:30 +00:00
ir3_nir_lower_layer_id.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
ir3_nir_lower_load_barycentric_at_offset.c nir, compiler: Rename needs_quad_helper_invocations 2025-03-14 21:55:57 +00:00
ir3_nir_lower_load_barycentric_at_sample.c freedreno: Convert to SPDX-License-Identifier instead of pasting whole license 2024-08-28 08:54:00 +00:00
ir3_nir_lower_push_consts_to_preamble.c treewide: Switch to nir_progress 2025-02-26 15:19:53 +00:00
ir3_nir_lower_shading_rate.c ir3: Use common shading rate lookup table 2025-08-21 22:48:32 +00:00
ir3_nir_lower_tess.c nir: make nir_block::predecessors & dom_frontier sets non-malloc'd 2025-08-21 06:13:48 +00:00
ir3_nir_lower_tex_prefetch.c treewide: use nir_def_as_* 2025-08-01 15:34:24 +00:00
ir3_nir_move_varying_inputs.c nir: remove nir_shader_compiler_options::lower_all_io_to_temps 2025-07-08 06:11:43 +00:00
ir3_nir_opt_preamble.c ir3: emit descriptor prefetch in block dominated by its sources 2025-08-22 05:21:25 +00:00
ir3_nir_trig.py freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_nir_triop_bitwise.py ir3: add pass to select bitwise triops 2024-11-28 06:19:59 +00:00
ir3_opt_predicates.c ir3: enable scalar predicates 2025-08-20 06:14:02 +00:00
ir3_parser.y ir3/isa: add encoding for scalar predicates 2025-08-20 06:14:02 +00:00
ir3_postsched.c ir3/postsched/legalize: ignore prefetch sam dummy src 2025-07-28 09:02:17 +02:00
ir3_preamble.c ir3: run cp after ir3_imm_const_to_preamble 2025-04-14 04:37:28 +00:00
ir3_print.c ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
ir3_ra.c all: rename gl_shader_stage_is_compute to mesa_shader_stage_is_compute 2025-08-06 10:28:41 +08:00
ir3_ra.h ir3: add ir3_aggressive_coalesce helper 2025-04-03 12:06:18 +00:00
ir3_ra_predicates.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
ir3_ra_validate.c freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_reconvergence.c ir3: fix physical edges of predicated branches 2024-10-28 10:37:36 +00:00
ir3_remove_unreachable.c freedreno: use unicode © instead of DOS-like (C) copyright sign 2024-08-28 08:54:00 +00:00
ir3_rpt.c ir3: don't vectorize nir_op_sdot_4x8_iadd[_sat] 2025-08-21 05:11:51 +00:00
ir3_sched.c build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
ir3_shader.c all: rename gl_shader_stage to mesa_shader_stage 2025-08-06 10:28:40 +08:00
ir3_shader.h all: rename gl_shader_stage to mesa_shader_stage 2025-08-06 10:28:40 +08:00
ir3_shader_bisect.c ir3: add shader bisect debug tool 2025-08-03 09:30:49 +00:00
ir3_shader_bisect.py ir3: add shader bisect debug tool 2025-08-03 09:30:49 +00:00
ir3_shared_folding.c ir3: reformat after refactoring in previous commit 2024-12-01 10:21:26 +00:00
ir3_shared_ra.c ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
ir3_spill.c ir3: refactor builders to use ir3_builder API 2024-12-01 10:21:26 +00:00
ir3_validate.c ir3: make backend aware of scalar predicates 2025-08-20 06:14:02 +00:00
meson.build ir3: add shader bisect debug tool 2025-08-03 09:30:49 +00:00