From 1951eb2dad2b9d33b83d0298a3f793950d277469 Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Wed, 10 Aug 2022 15:45:48 -0700 Subject: [PATCH] venus: Enable VK_KHR_shader_integer_dot_product 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 | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index e3927796f3a..dcf4d54c9c6 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -477,6 +477,7 @@ Vulkan 1.3 -- all DONE: anv, radv, lvp VK_KHR_dynamic_rendering DONE (anv, dzn, lvp, radv, tu, vn) VK_KHR_format_feature_flags2 DONE (anv, lvp, radv, tu, v3dv) VK_KHR_maintenance4 DONE (anv, lvp, radv, tu, vn) + VK_KHR_shader_integer_dot_product DONE (anv, lvp, radv, tu, vn) VK_KHR_shader_non_semantic_info DONE (anv, radv, tu, v3dv) VK_KHR_shader_terminate_invocation DONE (anv, lvp, radv, tu) VK_KHR_synchronization2 DONE (anv, lvp, panvk, radv, tu) @@ -519,7 +520,6 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_ray_tracing_maintenance1 DONE (radv/gfx10.3+) VK_KHR_ray_tracing_pipeline in progress VK_KHR_shader_clock DONE (anv, lvp, radv) - VK_KHR_shader_integer_dot_product DONE (anv, lvp, radv, tu) VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, radv) VK_KHR_shared_presentable_image not started VK_KHR_surface DONE (anv, dzn, lvp, panvk, pvr, radv, tu, v3dv, vn) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index b1734d33d4c..f96da266b93 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -119,6 +119,9 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) } /* Vulkan 1.3 */ + VN_ADD_EXT_TO_PNEXT(exts->KHR_shader_integer_dot_product, + feats->shader_integer_dot_product, + SHADER_INTEGER_DOT_PRODUCT_FEATURES, features2); VN_ADD_EXT_TO_PNEXT(exts->EXT_4444_formats, feats->argb_4444_formats, 4444_FORMATS_FEATURES_EXT, features2); VN_ADD_EXT_TO_PNEXT(exts->EXT_extended_dynamic_state, @@ -486,6 +489,9 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) VN_ADD_EXT_TO_PNEXT(exts->EXT_inline_uniform_block, props->inline_uniform_block, INLINE_UNIFORM_BLOCK_PROPERTIES, properties2); + VN_ADD_EXT_TO_PNEXT(exts->KHR_shader_integer_dot_product, + props->shader_integer_dot_product, + SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, properties2); /* EXT */ VN_ADD_EXT_TO_PNEXT( @@ -1041,6 +1047,7 @@ vn_physical_device_get_passthrough_extensions( .KHR_copy_commands2 = true, .KHR_dynamic_rendering = true, .KHR_maintenance4 = true, + .KHR_shader_integer_dot_product = true, .EXT_4444_formats = true, .EXT_extended_dynamic_state = true, .EXT_extended_dynamic_state2 = true, @@ -1663,6 +1670,7 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, CASE(MAINTENANCE_4_FEATURES, maintenance4); CASE(PIPELINE_CREATION_CACHE_CONTROL_FEATURES, pipeline_creation_cache_control); CASE(SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, shader_demote_to_helper_invocation); + CASE(SHADER_INTEGER_DOT_PRODUCT_FEATURES, shader_integer_dot_product); CASE(TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, texture_compression_astc_hdr); /* EXT */ @@ -1717,6 +1725,7 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, /* clang-format off */ /* Vulkan 1.3 */ CASE(INLINE_UNIFORM_BLOCK_PROPERTIES, inline_uniform_block); + CASE(SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, shader_integer_dot_product); /* 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 f271d3340f5..c7a913daf06 100644 --- a/src/virtio/vulkan/vn_physical_device.h +++ b/src/virtio/vulkan/vn_physical_device.h @@ -34,6 +34,7 @@ struct vn_physical_device_features { pipeline_creation_cache_control; VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures shader_demote_to_helper_invocation; + VkPhysicalDeviceShaderIntegerDotProductFeatures shader_integer_dot_product; VkPhysicalDeviceTextureCompressionASTCHDRFeatures texture_compression_astc_hdr; @@ -60,6 +61,8 @@ struct vn_physical_device_properties { /* Vulkan 1.3 */ VkPhysicalDeviceInlineUniformBlockProperties inline_uniform_block; VkPhysicalDeviceMaintenance4Properties maintenance4; + VkPhysicalDeviceShaderIntegerDotProductProperties + shader_integer_dot_product; /* EXT */ VkPhysicalDeviceConservativeRasterizationPropertiesEXT