panvk: enable subgroupSizeControl

This is trivial for us, the hardware only ever supports a single
subgroup size.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32710>
This commit is contained in:
Caterina Shablia 2025-01-13 19:39:12 +00:00 committed by Marge Bot
parent 1a81bff6aa
commit d46b80249b
3 changed files with 10 additions and 7 deletions

View file

@ -502,7 +502,7 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn, v3dv
VK_EXT_private_data DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_EXT_image_robustness DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
VK_EXT_shader_demote_to_helper_invocation DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_subgroup_size_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_subgroup_size_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn, panvk)
VK_EXT_texel_buffer_alignment DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
VK_EXT_texture_compression_astc_hdr DONE (vn)
VK_EXT_tooling_info DONE (anv, hasvk, nvk, panvk, pvr, radv, tu, v3dv, vn)

View file

@ -36,3 +36,4 @@ VK_KHR_depth_clamp_zero_one on RADV
VK_KHR_maintenance8 on radv
VK_KHR_shader_subgroup_rotate on panvk/v10+
Vulkan 1.1 on panvk/v10+
VK_EXT_subgroup_size_control on panvk/v10+

View file

@ -245,6 +245,7 @@ get_device_extensions(const struct panvk_physical_device *device,
.EXT_sampler_filter_minmax = arch >= 10,
.EXT_scalar_block_layout = true,
.EXT_shader_module_identifier = true,
.EXT_subgroup_size_control = true,
.EXT_tooling_info = true,
.GOOGLE_decorate_string = true,
.GOOGLE_hlsl_functionality1 = true,
@ -356,8 +357,8 @@ get_features(const struct panvk_physical_device *device,
.privateData = true,
.shaderDemoteToHelperInvocation = false,
.shaderTerminateInvocation = false,
.subgroupSizeControl = false,
.computeFullSubgroups = false,
.subgroupSizeControl = true,
.computeFullSubgroups = true,
.synchronization2 = true,
.textureCompressionASTC_HDR = false,
.shaderZeroInitializeWorkgroupMemory = true,
@ -773,10 +774,11 @@ get_device_properties(const struct panvk_instance *instance,
/* Vulkan 1.3 properties */
/* XXX: 1.3 support */
/* XXX: VK_EXT_subgroup_size_control */
.minSubgroupSize = 8,
.maxSubgroupSize = 8,
.maxComputeWorkgroupSubgroups = 48,
.requiredSubgroupSizeStages = VK_SHADER_STAGE_ALL,
.minSubgroupSize = pan_subgroup_size(arch),
.maxSubgroupSize = pan_subgroup_size(arch),
.maxComputeWorkgroupSubgroups =
device->kmod.props.max_threads_per_wg / pan_subgroup_size(arch),
.requiredSubgroupSizeStages = VK_SHADER_STAGE_COMPUTE_BIT,
/* XXX: VK_EXT_inline_uniform_block */
.maxInlineUniformBlockSize = MAX_INLINE_UNIFORM_BLOCK_SIZE,
.maxPerStageDescriptorInlineUniformBlocks =