radv: enable VK_KHR_shader_subgroup_rotate

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27269>
This commit is contained in:
Georg Lehmann
2024-01-25 14:36:52 +01:00
parent 6725ad9f22
commit a3a1a8b1d0
4 changed files with 9 additions and 0 deletions

View File

@@ -532,6 +532,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, radv/gfx10.3+)
VK_KHR_ray_tracing_position_fetch DONE (radv/gfx10.3+)
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, vn)
VK_KHR_shader_subgroup_rotate DONE (radv)
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, radv)
VK_KHR_shared_presentable_image not started
VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)

View File

@@ -0,0 +1 @@
VK_KHR_shader_subgroup_rotate on RADV

View File

@@ -496,6 +496,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
.KHR_shader_integer_dot_product = true,
.KHR_shader_non_semantic_info = true,
.KHR_shader_subgroup_extended_types = true,
.KHR_shader_subgroup_rotate = true,
.KHR_shader_subgroup_uniform_control_flow = true,
.KHR_shader_terminate_invocation = true,
.KHR_spirv_1_4 = true,
@@ -1111,6 +1112,10 @@ radv_physical_device_get_features(const struct radv_physical_device *pdevice, st
/* VK_KHR_maintenance6 */
.maintenance6 = true,
/* VK_KHR_shader_subgroup_rotate */
.shaderSubgroupRotate = true,
.shaderSubgroupRotateClustered = true,
};
}

View File

@@ -400,6 +400,7 @@ radv_shader_spirv_to_nir(struct radv_device *device, const struct radv_shader_st
.subgroup_ballot = true,
.subgroup_basic = true,
.subgroup_quad = true,
.subgroup_rotate = true,
.subgroup_shuffle = true,
.subgroup_uniform_control_flow = true,
.subgroup_vote = true,
@@ -609,6 +610,7 @@ radv_shader_spirv_to_nir(struct radv_device *device, const struct radv_shader_st
.lower_to_scalar = 1,
.lower_subgroup_masks = 1,
.lower_relative_shuffle = 1,
.lower_rotate_to_shuffle = radv_use_llvm_for_stage(device, nir->info.stage),
.lower_shuffle_to_32bit = 1,
.lower_vote_eq = 1,
.lower_vote_bool_eq = 1,