From 44cfc5706245c91e544a105e93aa24e2017c5043 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 18 Mar 2024 18:50:06 -0500 Subject: [PATCH] nvk: Advertise VK_KHR_shader_subgroup_uniform_control_flow Part-of: --- docs/features.txt | 2 +- docs/relnotes/new_features.txt | 1 + src/nouveau/vulkan/nvk_physical_device.c | 4 ++++ src/nouveau/vulkan/nvk_shader.c | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index f176605ee30..266d0f8f23b 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -539,7 +539,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_KHR_shader_maximal_reconvergence DONE (lvp, radv) VK_KHR_shader_subgroup_rotate DONE (anv, radv) - VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, radv) + VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, nvk, radv) VK_KHR_shader_quad_control DONE (radv) VK_KHR_shared_presentable_image not started VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 54aa1c4d0ec..7131a41992d 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -10,3 +10,4 @@ OpenGL 4.6 on Asahi OpenGL ES 3.2 on Asahi Mali G610 and G310 on Panfrost Mali T600 on Panfrost +VK_KHR_shader_subgroup_uniform_control_flow on NVK \ No newline at end of file diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 5b6bc2a43da..1f4bf558830 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -149,6 +149,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, .KHR_shader_maximal_reconvergence = true, .KHR_shader_non_semantic_info = true, .KHR_shader_subgroup_extended_types = true, + .KHR_shader_subgroup_uniform_control_flow = nvk_use_nak(info), .KHR_shader_terminate_invocation = (nvk_nak_stages(info) & VK_SHADER_STAGE_FRAGMENT_BIT) != 0, .KHR_spirv_1_4 = true, @@ -569,6 +570,9 @@ nvk_get_device_features(const struct nv_device_info *info, /* VK_EXT_shader_object */ .shaderObject = true, + /* VK_KHR_shader_subgroup_uniform_control_flow */ + .shaderSubgroupUniformControlFlow = nvk_use_nak(info), + /* VK_EXT_texel_buffer_alignment */ .texelBufferAlignment = true, diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index d9a1764112b..9b3f7f82874 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -156,6 +156,7 @@ nvk_get_spirv_options(struct vk_physical_device *vk_pdev, .subgroup_basic = true, .subgroup_quad = true, .subgroup_shuffle = true, + .subgroup_uniform_control_flow = true, .subgroup_vote = true, .tessellation = true, .transform_feedback = true,