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>
This commit is contained in:
Lionel Landwerlin 2025-08-12 14:54:59 +03:00 committed by Marge Bot
parent e098bf399a
commit df37c7ca74
2 changed files with 11 additions and 1 deletions

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)); 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 * 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 * type \p T as result. \p C is a closure that encapsulates whatever

View file

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