Module: Mesa
Branch: main
Commit: bd667acb3546940480ad7b7869bed1ac21e1a36b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bd667acb3546940480ad7b7869bed1ac21e1a36b

Author: Faith Ekstrand <faith.ekstr...@collabora.com>
Date:   Mon Dec  4 09:57:32 2023 -0600

nvk: Advertise VK_EXT_subgroup_size_control

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9617
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26503>

---

 docs/features.txt                        | 2 +-
 src/nouveau/vulkan/nvk_physical_device.c | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/docs/features.txt b/docs/features.txt
index 0c16645c585..b47dec1fe5b 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -493,7 +493,7 @@ Vulkan 1.3 -- all DONE: anv, radv, tu, lvp, vn
   VK_EXT_private_data                                   DONE (anv, hasvk, lvp, 
nvk, pvr, radv, tu, v3dv, vn)
   VK_EXT_image_robustness                               DONE (anv, hasvk, lvp, 
nvk, radv, tu, v3dv, vn)
   VK_EXT_shader_demote_to_helper_invocation             DONE (anv, hasvk, lvp, 
nvk, radv, tu, vn)
-  VK_EXT_subgroup_size_control                          DONE (anv, hasvk, lvp, 
radv, tu, vn)
+  VK_EXT_subgroup_size_control                          DONE (anv, hasvk, lvp, 
nvk, radv, tu, vn)
   VK_EXT_texel_buffer_alignment                         DONE (anv, hasvk, lvp, 
pvr, radv, tu, v3dv, vn)
   VK_EXT_texture_compression_astc_hdr                   DONE (vn)
   VK_EXT_tooling_info                                   DONE (anv, hasvk, nvk, 
pvr, radv, tu, v3dv, vn)
diff --git a/src/nouveau/vulkan/nvk_physical_device.c 
b/src/nouveau/vulkan/nvk_physical_device.c
index 0fc3ccc213f..10f67cbf671 100644
--- a/src/nouveau/vulkan/nvk_physical_device.c
+++ b/src/nouveau/vulkan/nvk_physical_device.c
@@ -167,6 +167,7 @@ nvk_get_device_extensions(const struct nv_device_info *info,
       .EXT_separate_stencil_usage = true,
       .EXT_shader_demote_to_helper_invocation = true,
       .EXT_shader_viewport_index_layer = info->cls_eng3d >= MAXWELL_B,
+      .EXT_subgroup_size_control = true,
       .EXT_tooling_info = true,
       .EXT_transform_feedback = true,
       .EXT_vertex_attribute_divisor = true,
@@ -292,6 +293,8 @@ nvk_get_device_features(const struct nv_device_info *info,
       .privateData = true,
       .shaderDemoteToHelperInvocation = true,
       .shaderTerminateInvocation = true,
+      .subgroupSizeControl = true,
+      .computeFullSubgroups = true,
       .synchronization2 = true,
       .dynamicRendering = true,
       .maintenance4 = true,
@@ -653,6 +656,10 @@ nvk_get_device_properties(const struct nvk_instance 
*instance,
       .maxTimelineSemaphoreValueDifference = UINT64_MAX,
 
       /* Vulkan 1.3 properties */
+      .minSubgroupSize = 32,
+      .maxSubgroupSize = 32,
+      .maxComputeWorkgroupSubgroups = 1024 / 32,
+      .requiredSubgroupSizeStages = 0,
       .maxInlineUniformBlockSize = 1 << 16,
       .maxPerStageDescriptorInlineUniformBlocks = 32,
       .maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 32,

Reply via email to