aboutsummaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan
diff options
context:
space:
mode:
authorTimur Kristóf <[email protected]>2020-03-11 15:05:47 +0100
committerMarge Bot <[email protected]>2020-03-12 13:16:07 +0000
commit967eb2326155eaa7f2f3d3b8c459a2cb82eca1dc (patch)
tree03f32107a9b71febff6405c0222b78bc697f026a /src/amd/vulkan
parentec16535b493b54c8c039576c0303f324242ae3fb (diff)
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: [email protected] Signed-off-by: Timur Kristóf <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4147> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4147>
Diffstat (limited to 'src/amd/vulkan')
-rw-r--r--src/amd/vulkan/radv_shader.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 37b8ee45e34..049611371f6 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -480,6 +480,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,
@@ -488,6 +489,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);