brw: fix analysis dirtying with pulled constants

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 5c17299084 ("brw: enable A64 pulling of push constants")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36455>
(cherry picked from commit df37c7ca74)
This commit is contained in:
Lionel Landwerlin 2025-08-12 14:54:59 +03:00 committed by Eric Engestrom
parent 0984a7f374
commit 0fb416d506
3 changed files with 12 additions and 2 deletions

View file

@ -3504,7 +3504,7 @@
"description": "brw: fix analysis dirtying with pulled constants",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "5c1729908471a1b000fa4ab0b29ac9f79a8b7394",
"notes": null

View file

@ -82,6 +82,13 @@ operator|(brw_analysis_dependency_class x, brw_analysis_dependency_class y)
static_cast<unsigned>(x) | static_cast<unsigned>(y));
}
inline brw_analysis_dependency_class
operator|=(brw_analysis_dependency_class x, brw_analysis_dependency_class y)
{
return static_cast<brw_analysis_dependency_class>(
static_cast<unsigned>(x) | static_cast<unsigned>(y));
}
/**
* Instantiate a program analysis class \p L which can calculate an object of
* type \p T as result. \p C is a closure that encapsulates whatever

View file

@ -678,6 +678,8 @@ brw_shader::assign_curb_setup()
brw_imm_ud(INTEL_MASK(31, 6)));
}
brw_analysis_dependency_class dirty_bits = BRW_DEPENDENCY_INSTRUCTIONS;
/* On Gfx12-HP we load constants at the start of the program using A32
* stateless messages.
*/
@ -691,6 +693,7 @@ brw_shader::assign_curb_setup()
if (i != 0) {
if (pull_constants_a64) {
dirty_bits |= BRW_DEPENDENCY_VARIABLES;
/* We need to do the carry manually as when this pass is run,
* we're not expecting any 64bit ALUs. Unfortunately all the
* 64bit lowering is done in NIR.
@ -752,7 +755,7 @@ brw_shader::assign_curb_setup()
i += num_regs;
}
invalidate_analysis(BRW_DEPENDENCY_INSTRUCTIONS);
invalidate_analysis(dirty_bits);
}
/* Map the offsets in the UNIFORM file to fixed HW regs. */