From ed123a03be185af28d563f640a7ab9a1093af1a8 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Mon, 21 Jun 2021 16:54:56 +0100 Subject: [PATCH] radv: enable VK_KHR_shader_subgroup_uniform_control_flow Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Part-of: --- docs/features.txt | 1 + docs/relnotes/new_features.txt | 2 +- src/amd/vulkan/radv_device.c | 7 +++++++ src/amd/vulkan/radv_shader.c | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index f3004f61fd8..460cdb801ba 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -494,6 +494,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_push_descriptor DONE (anv, lvp, radv, tu) VK_KHR_shader_clock DONE (anv, radv) VK_KHR_shader_non_semantic_info DONE (anv, radv) + VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, radv) VK_KHR_shader_terminate_invocation DONE (anv, radv, tu) VK_KHR_shared_presentable_image not started VK_KHR_surface DONE (anv, lvp, radv, tu, v3dv, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 2ea846ac586..303fb23e573 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -3,7 +3,7 @@ VK_EXT_provoking_vertex on RADV. VK_EXT_extended_dynamic_state2 on RADV. VK_EXT_global_priority_query on RADV. VK_EXT_physical_device_drm on RADV. -VK_KHR_shader_subgroup_uniform_control_flow on Intel. +VK_KHR_shader_subgroup_uniform_control_flow on Intel and RADV. 32-bit x86 builds now default disable x87 math and use sse2. GL ES 3.1 on GT21x hardware. VK_EXT_acquire_drm_display on RADV. diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index b5d799f8dee..c1464c264d8 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -434,6 +434,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device .KHR_shader_float_controls = true, .KHR_shader_non_semantic_info = true, .KHR_shader_subgroup_extended_types = true, + .KHR_shader_subgroup_uniform_control_flow = true, .KHR_shader_terminate_invocation = true, .KHR_spirv_1_4 = true, .KHR_storage_buffer_storage_class = true, @@ -1642,6 +1643,12 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, features->descriptorBindingAccelerationStructureUpdateAfterBind = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: { + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *features = + (VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *)ext; + features->shaderSubgroupUniformControlFlow = true; + break; + } default: break; } diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 5a1903b9a1a..2960008eb30 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -454,6 +454,7 @@ radv_shader_compile_to_nir(struct radv_device *device, struct vk_shader_module * .subgroup_basic = true, .subgroup_quad = true, .subgroup_shuffle = true, + .subgroup_uniform_control_flow = true, .subgroup_vote = true, .tessellation = true, .transform_feedback = true,