From f2c6a5506114f74fb12d77aeddb2f06b5602101c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Sch=C3=BCrmann?= Date: Tue, 6 Mar 2018 15:05:13 +0100 Subject: [PATCH] radv: enable subgroup capabilities Reviewed-by: Bas Nieuwenhuizen --- src/amd/vulkan/radv_device.c | 10 ++++++++-- src/amd/vulkan/radv_shader.c | 7 ++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index a4a0ea6dd5f..b8313b26ebf 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -940,8 +940,14 @@ void radv_GetPhysicalDeviceProperties2( (VkPhysicalDeviceSubgroupProperties*)ext; properties->subgroupSize = 64; properties->supportedStages = VK_SHADER_STAGE_ALL; - properties->supportedOperations = VK_SUBGROUP_FEATURE_BASIC_BIT; - properties->quadOperationsInAllStages = false; + properties->supportedOperations = + VK_SUBGROUP_FEATURE_BASIC_BIT | + VK_SUBGROUP_FEATURE_BALLOT_BIT | + VK_SUBGROUP_FEATURE_QUAD_BIT | + VK_SUBGROUP_FEATURE_SHUFFLE_BIT | + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT | + VK_SUBGROUP_FEATURE_VOTE_BIT; + properties->quadOperationsInAllStages = true; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: { diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index eaf24dcdee8..9d49bc02a81 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -213,7 +213,11 @@ radv_shader_compile_to_nir(struct radv_device *device, .tessellation = true, .int64 = true, .multiview = true, + .subgroup_ballot = true, .subgroup_basic = true, + .subgroup_quad = true, + .subgroup_shuffle = true, + .subgroup_vote = true, .variable_pointers = true, .gcn_shader = true, .trinary_minmax = true, @@ -283,7 +287,8 @@ radv_shader_compile_to_nir(struct radv_device *device, .lower_to_scalar = 1, .lower_subgroup_masks = 1, .lower_shuffle = 1, - .lower_quad = 1, + .lower_shuffle_to_32bit = 1, + .lower_vote_eq_to_ballot = 1, }); radv_optimize_nir(nir); -- 2.30.2