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

Author: Iago Toral Quiroga <ito...@igalia.com>
Date:   Wed Jan 10 11:31:45 2024 +0100

v3dv: expose VK_EXT_subgroup_size_control

This is trivial for us since we don't support variable subgroup sizes.

Reviewed-by: Alejandro PiƱeiro <apinhe...@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26968>

---

 docs/features.txt                 |  2 +-
 src/broadcom/vulkan/v3dv_device.c | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/docs/features.txt b/docs/features.txt
index cde9da5f52b..953696a58fc 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, v3dv, vn)
-  VK_EXT_subgroup_size_control                          DONE (anv, hasvk, lvp, 
nvk, radv, tu, vn)
+  VK_EXT_subgroup_size_control                          DONE (anv, hasvk, lvp, 
nvk, radv, tu, v3dv, vn)
   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, 
pvr, radv, tu, v3dv, vn)
diff --git a/src/broadcom/vulkan/v3dv_device.c 
b/src/broadcom/vulkan/v3dv_device.c
index 4497942ac4c..3f8b1970f44 100644
--- a/src/broadcom/vulkan/v3dv_device.c
+++ b/src/broadcom/vulkan/v3dv_device.c
@@ -207,6 +207,7 @@ get_device_extensions(const struct v3dv_physical_device 
*device,
       .EXT_separate_stencil_usage           = true,
       .EXT_shader_demote_to_helper_invocation = true,
       .EXT_shader_module_identifier         = true,
+      .EXT_subgroup_size_control            = true,
       .EXT_texel_buffer_alignment           = true,
       .EXT_tooling_info                     = true,
       .EXT_vertex_attribute_divisor         = true,
@@ -448,6 +449,10 @@ get_features(const struct v3dv_physical_device 
*physical_device,
 
       /* VK_EXT_shader_demote_to_helper_invocation */
       .shaderDemoteToHelperInvocation = true,
+
+      /* VK_EXT_subgroup_size_control */
+      .subgroupSizeControl = true,
+      .computeFullSubgroups = true,
    };
 }
 
@@ -1301,6 +1306,11 @@ v3dv_GetPhysicalDeviceProperties2(VkPhysicalDevice 
physicalDevice,
       .integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = false,
       .integerDotProductAccumulatingSaturating64BitSignedAccelerated = false,
       .integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated 
= false,
+      /* VK_EXT_subgroup_size_control */
+      .minSubgroupSize = V3D_CHANNELS,
+      .maxSubgroupSize = V3D_CHANNELS,
+      .maxComputeWorkgroupSubgroups = 16, /* 256 / 16 */
+      .requiredSubgroupSizeStages = VK_SHADER_STAGE_COMPUTE_BIT,
    };
 
    VkPhysicalDeviceVulkan12Properties vk12 = {

Reply via email to