diff --git a/docs/features.txt b/docs/features.txt index 1963da4a1b8..171acfe6d84 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 055038b46f8..fc18c0b31cd 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -147,6 +147,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, .KHR_shader_integer_dot_product = 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, @@ -537,6 +538,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 a4fef965122..1fb59288263 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -154,6 +154,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,