From 246f29d0b1b28d1444a1e11a894a7ab38ed0bfa5 Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Wed, 10 Aug 2022 17:32:15 -0700 Subject: [PATCH] venus: Enable VK_EXT_subgroup_size_control Signed-off-by: Chad Versace Reviewed-by: Yiwei Zhang Reviewed-by: Ryan Neph Part-of: --- docs/features.txt | 2 +- src/virtio/vulkan/vn_physical_device.c | 9 +++++++++ src/virtio/vulkan/vn_physical_device.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index 5cffde12dd5..d59af317bea 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -491,7 +491,7 @@ Vulkan 1.3 -- all DONE: anv, radv, lvp VK_EXT_private_data DONE (anv, lvp, pvr, radv, tu, v3dv) VK_EXT_image_robustness DONE (anv, lvp, radv, tu, vn) VK_EXT_shader_demote_to_helper_invocation DONE (anv, lvp, radv, tu, vn) - VK_EXT_subgroup_size_control DONE (anv, lvp, radv, tu) + VK_EXT_subgroup_size_control DONE (anv, lvp, radv, tu, vn) VK_EXT_texel_buffer_alignment DONE (anv, lvp, radv, tu, v3dv) Khronos extensions that are not part of any Vulkan version: diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index 64b01618d40..6014f7d8c90 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -149,6 +149,9 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) feats->shader_demote_to_helper_invocation, SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, features2); + VN_ADD_EXT_TO_PNEXT(exts->EXT_subgroup_size_control, + feats->subgroup_size_control, + SUBGROUP_SIZE_CONTROL_FEATURES, features2); VN_ADD_EXT_TO_PNEXT(exts->EXT_texture_compression_astc_hdr, feats->texture_compression_astc_hdr, TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, features2); @@ -498,6 +501,9 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) VN_ADD_EXT_TO_PNEXT(exts->KHR_shader_integer_dot_product, props->shader_integer_dot_product, SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, properties2); + VN_ADD_EXT_TO_PNEXT(exts->EXT_subgroup_size_control, + props->subgroup_size_control, + SUBGROUP_SIZE_CONTROL_PROPERTIES, properties2); /* EXT */ VN_ADD_EXT_TO_PNEXT( @@ -1064,6 +1070,7 @@ vn_physical_device_get_passthrough_extensions( .EXT_inline_uniform_block = true, .EXT_pipeline_creation_cache_control = true, .EXT_shader_demote_to_helper_invocation = true, + .EXT_subgroup_size_control = true, .EXT_texture_compression_astc_hdr = true, /* EXT */ @@ -1681,6 +1688,7 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, CASE(SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, shader_demote_to_helper_invocation); CASE(SHADER_INTEGER_DOT_PRODUCT_FEATURES, shader_integer_dot_product); CASE(SHADER_TERMINATE_INVOCATION_FEATURES, shader_terminate_invocation); + CASE(SUBGROUP_SIZE_CONTROL_FEATURES, subgroup_size_control); CASE(TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, texture_compression_astc_hdr); CASE(ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, zero_initialize_workgroup_memory); @@ -1737,6 +1745,7 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, /* Vulkan 1.3 */ CASE(INLINE_UNIFORM_BLOCK_PROPERTIES, inline_uniform_block); CASE(SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, shader_integer_dot_product); + CASE(SUBGROUP_SIZE_CONTROL_PROPERTIES, subgroup_size_control); /* EXT */ CASE(CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, conservative_rasterization); diff --git a/src/virtio/vulkan/vn_physical_device.h b/src/virtio/vulkan/vn_physical_device.h index 503132cc7a8..bfe9334188e 100644 --- a/src/virtio/vulkan/vn_physical_device.h +++ b/src/virtio/vulkan/vn_physical_device.h @@ -37,6 +37,7 @@ struct vn_physical_device_features { VkPhysicalDeviceShaderIntegerDotProductFeatures shader_integer_dot_product; VkPhysicalDeviceShaderTerminateInvocationFeatures shader_terminate_invocation; + VkPhysicalDeviceSubgroupSizeControlFeatures subgroup_size_control; VkPhysicalDeviceTextureCompressionASTCHDRFeatures texture_compression_astc_hdr; VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures @@ -67,6 +68,7 @@ struct vn_physical_device_properties { VkPhysicalDeviceMaintenance4Properties maintenance4; VkPhysicalDeviceShaderIntegerDotProductProperties shader_integer_dot_product; + VkPhysicalDeviceSubgroupSizeControlProperties subgroup_size_control; /* EXT */ VkPhysicalDeviceConservativeRasterizationPropertiesEXT