diff --git a/docs/features.txt b/docs/features.txt index cebd9052602..c75ad62e5bb 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -550,7 +550,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_shader_maximal_reconvergence DONE (anv, lvp, nvk, radv) VK_KHR_shader_subgroup_rotate DONE (anv, nvk, radv, tu) VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, nvk, radv, tu) - VK_KHR_shader_quad_control DONE (anv, radv) + VK_KHR_shader_quad_control DONE (anv, nvk, radv) VK_KHR_shared_presentable_image not started VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_KHR_surface_protected_capabilities DONE (anv, lvp, nvk, radv, tu, v3dv, vn) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index c2288742254..2b0164e1824 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -20,3 +20,4 @@ VK_KHR_shader_float_controls2 on nvk VK_EXT_device_generated_commands on nvk VK_EXT_host_image_copy on nvk/Turing+ VK_EXT_depth_clamp_control on anv, hasvk, nvk, radv +VK_KHR_shader_quad_control on nvk diff --git a/src/nouveau/compiler/nak_nir.c b/src/nouveau/compiler/nak_nir.c index 4835de038f1..05627c3a41b 100644 --- a/src/nouveau/compiler/nak_nir.c +++ b/src/nouveau/compiler/nak_nir.c @@ -890,6 +890,7 @@ nak_postprocess_nir(nir_shader *nir, .lower_first_invocation_to_ballot = true, .lower_read_first_invocation = true, .lower_elect = true, + .lower_quad_vote = true, .lower_inverse_ballot = true, .lower_rotate_to_shuffle = true }; diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 9c6d2122c54..01eeb30f884 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -157,6 +157,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, .KHR_shader_integer_dot_product = true, .KHR_shader_maximal_reconvergence = true, .KHR_shader_non_semantic_info = true, + .KHR_shader_quad_control = true, .KHR_shader_relaxed_extended_instruction = true, .KHR_shader_subgroup_extended_types = true, .KHR_shader_subgroup_rotate = nvk_use_nak(info), @@ -449,6 +450,9 @@ nvk_get_device_features(const struct nv_device_info *info, /* VK_KHR_present_wait */ .presentWait = supported_extensions->KHR_present_wait, + /* VK_KHR_shader_quad_control */ + .shaderQuadControl = nvk_use_nak(info), + /* VK_KHR_shader_clock */ .shaderSubgroupClock = true, .shaderDeviceClock = true,