From b02e8a9f1d8aeed9be0fd14f45b3197762176400 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Wed, 26 Feb 2025 16:51:05 -0800 Subject: [PATCH] venus: added passthrough extension support - Part IV Below extensions are added: 1. VK_EXT_shader_atomic_float 2. VK_EXT_shader_atomic_float2 3. VK_EXT_shader_image_atomic_int64 4. VK_EXT_shader_replicated_composites Test: - dEQP-VK.glsl.atomic_operations.* - dEQP-VK.image.atomic_operations.* Signed-off-by: Yiwei Zhang Part-of: --- docs/features.txt | 8 ++++---- src/virtio/vulkan/vn_physical_device.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 3775f615bc8..14240519397 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -643,11 +643,11 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_rasterization_order_attachment_access DONE (lvp, tu, vn) VK_EXT_robustness2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn) VK_EXT_sample_locations DONE (anv, hasvk, nvk, radv/gfx9-, tu/a650+, vn) - VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv) - VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv) - VK_EXT_shader_image_atomic_int64 DONE (nvk, radv) + VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv, vn) + VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn) + VK_EXT_shader_image_atomic_int64 DONE (nvk, radv, vn) VK_EXT_shader_object DONE (lvp, nvk, radv) - VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, lvp, nvk, radv, tu) + VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn) VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn) VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn) VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv, vn) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index ad0d3c52766..9ebcafb84d9 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -194,6 +194,12 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT rasterization_order_attachment_access; VkPhysicalDeviceRobustness2FeaturesEXT robustness_2; + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT shader_atomic_float; + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT shader_atomic_float_2; + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + shader_image_atomic_int64; + VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT + shader_replicated_composites; VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback; VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT vertex_input_dynamic_state; @@ -316,6 +322,10 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) VN_ADD_PNEXT_EXT(feats2, PROVOKING_VERTEX_FEATURES_EXT, local_feats.provoking_vertex, exts->EXT_provoking_vertex); VN_ADD_PNEXT_EXT(feats2, RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, local_feats.rasterization_order_attachment_access, exts->EXT_rasterization_order_attachment_access || exts->ARM_rasterization_order_attachment_access); VN_ADD_PNEXT_EXT(feats2, ROBUSTNESS_2_FEATURES_EXT, local_feats.robustness_2, exts->EXT_robustness2); + VN_ADD_PNEXT_EXT(feats2, SHADER_ATOMIC_FLOAT_FEATURES_EXT, local_feats.shader_atomic_float, exts->EXT_shader_atomic_float); + VN_ADD_PNEXT_EXT(feats2, SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, local_feats.shader_atomic_float_2, exts->EXT_shader_atomic_float2); + VN_ADD_PNEXT_EXT(feats2, SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, local_feats.shader_image_atomic_int64, exts->EXT_shader_image_atomic_int64); + VN_ADD_PNEXT_EXT(feats2, SHADER_REPLICATED_COMPOSITES_FEATURES_EXT, local_feats.shader_replicated_composites, exts->EXT_shader_replicated_composites); VN_ADD_PNEXT_EXT(feats2, TRANSFORM_FEEDBACK_FEATURES_EXT, local_feats.transform_feedback, exts->EXT_transform_feedback); VN_ADD_PNEXT_EXT(feats2, VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT, local_feats.vertex_input_dynamic_state, exts->EXT_vertex_input_dynamic_state); @@ -1221,6 +1231,10 @@ vn_physical_device_get_passthrough_extensions( .EXT_rasterization_order_attachment_access = true, .EXT_robustness2 = true, .EXT_sample_locations = true, + .EXT_shader_atomic_float = true, + .EXT_shader_atomic_float2 = true, + .EXT_shader_image_atomic_int64 = true, + .EXT_shader_replicated_composites = true, .EXT_shader_stencil_export = true, .EXT_shader_subgroup_ballot = true, .EXT_shader_subgroup_vote = true,