nir/subgroups: Support > 1 ballot components
Qualcomm has a mode with a subgroup size of 128, so just emitting larger integer operations and then lowering them later isn't an option. This makes the pass able to handle the lowering itself, so that we don't have to go down to 64-thread wavefronts when ballots are used. (The GLSL and legacy SPIR-V extensions only support a maximum of 64 threads, but I guess we'll cross that bridge when we come to it...) Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6752>
This commit is contained in:
@@ -874,6 +874,7 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir,
|
||||
|
||||
const nir_lower_subgroups_options subgroups_options = {
|
||||
.ballot_bit_size = 32,
|
||||
.ballot_components = 1,
|
||||
.lower_to_scalar = true,
|
||||
.lower_vote_trivial = !is_scalar,
|
||||
.lower_shuffle = true,
|
||||
@@ -1354,6 +1355,7 @@ brw_nir_apply_key(nir_shader *nir,
|
||||
.subgroup_size = get_subgroup_size(nir->info.stage, key,
|
||||
max_subgroup_size),
|
||||
.ballot_bit_size = 32,
|
||||
.ballot_components = 1,
|
||||
.lower_subgroup_masks = true,
|
||||
};
|
||||
OPT(nir_lower_subgroups, &subgroups_options);
|
||||
|
Reference in New Issue
Block a user