nir/lower_scratch_to_var: handle KERNELs

need 64-bit indices or else we blow up.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33099>
This commit is contained in:
Alyssa Rosenzweig 2025-01-30 09:27:29 -05:00 committed by Marge Bot
parent 63c94cf755
commit 50428f3c8a

View file

@ -60,9 +60,12 @@ lower_scratch_to_var(nir_builder *b, nir_intrinsic_instr *intr, void *data)
nir_def *index = nir_udiv_aligned_4(b, intr->src[1].ssa);
nir_def *value = intr->src[0].ssa;
index = nir_u2uN(b, index, nir_get_ptr_bitsize(b->shader));
nir_store_array_var(b, scratch, index, value, nir_component_mask(1));
} else if (intr->intrinsic == nir_intrinsic_load_scratch) {
nir_def *index = nir_udiv_aligned_4(b, intr->src[0].ssa);
index = nir_u2uN(b, index, nir_get_ptr_bitsize(b->shader));
nir_def_rewrite_uses(&intr->def, nir_load_array_var(b, scratch, index));
} else {
return false;