diff --git a/.pick_status.json b/.pick_status.json index 0da5de9e38e..8c6dea17dd8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -244,7 +244,7 @@ "description": "ac/nir/cull: do not reuse variables if subgroup ops are used", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/common/nir/ac_nir_lower_ngg.c b/src/amd/common/nir/ac_nir_lower_ngg.c index aa454239307..66f38be1815 100644 --- a/src/amd/common/nir/ac_nir_lower_ngg.c +++ b/src/amd/common/nir/ac_nir_lower_ngg.c @@ -752,6 +752,12 @@ save_reusable_variables(nir_builder *b, lower_ngg_nogs_state *s) ASSERTED int vec_ok = u_vector_init(&s->reusable_nondeferred_variables, 4, sizeof(reusable_nondeferred_variable)); assert(vec_ok); + /* Subgroup ops make divergence information useless for our purpose, + * we would need workgroup divergence. + */ + if (b->shader->info.uses_wide_subgroup_intrinsics) + return; + /* Upper limit on reusable uniforms in order to reduce SGPR spilling. */ unsigned remaining_reusable_uniforms = 48;