mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
radv: Enable lowering dynamic quad broadcasts.
This will lower dynamic quad broadcasts into something that both
LLVM and ACO can understand. On hardware which supports shuffles,
they are lowered to shuffle, on older hardware (GFX6-7) they will
get lowered to constant quad broadcasts.
Fixes dEQP-VK.subgroups.quad.*.subgroupquadbroadcast_nonconst_*
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4147>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4147>
(cherry picked from commit 967eb23261)
This commit is contained in:
parent
5f896ad529
commit
97f4d6bdf0
2 changed files with 4 additions and 1 deletions
|
|
@ -490,7 +490,7 @@
|
|||
"description": "radv: Enable lowering dynamic quad broadcasts.",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -478,6 +478,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
|||
|
||||
nir_lower_global_vars_to_local(nir);
|
||||
nir_remove_dead_variables(nir, nir_var_function_temp);
|
||||
bool gfx7minus = device->physical_device->rad_info.chip_class <= GFX7;
|
||||
nir_lower_subgroups(nir, &(struct nir_lower_subgroups_options) {
|
||||
.subgroup_size = 64,
|
||||
.ballot_bit_size = 64,
|
||||
|
|
@ -486,6 +487,8 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
|||
.lower_shuffle = 1,
|
||||
.lower_shuffle_to_32bit = 1,
|
||||
.lower_vote_eq_to_ballot = 1,
|
||||
.lower_quad_broadcast_dynamic = 1,
|
||||
.lower_quad_broadcast_dynamic_to_const = gfx7minus,
|
||||
});
|
||||
|
||||
nir_lower_load_const_to_scalar(nir);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue