From ea273dd8b946a9423f343e035755baf7bf0045bc Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Wed, 10 Aug 2022 17:39:24 -0700 Subject: [PATCH] venus: Enable VK_EXT_texel_buffer_alignment The patch looks asymmetic because the extension was promoted to 1.3 but not its feature struct. 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 d59af317bea..d8e37a1709c 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -492,7 +492,7 @@ Vulkan 1.3 -- all DONE: anv, radv, lvp 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, vn) - VK_EXT_texel_buffer_alignment DONE (anv, lvp, radv, tu, v3dv) + VK_EXT_texel_buffer_alignment DONE (anv, lvp, radv, tu, v3dv, vn) 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 6014f7d8c90..7f6d0bcdeab 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -182,6 +182,9 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) PROVOKING_VERTEX_FEATURES_EXT, features2); VN_ADD_EXT_TO_PNEXT(exts->EXT_robustness2, feats->robustness_2, ROBUSTNESS_2_FEATURES_EXT, features2); + VN_ADD_EXT_TO_PNEXT(exts->EXT_texel_buffer_alignment, + feats->texel_buffer_alignment, + TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, features2); VN_ADD_EXT_TO_PNEXT(exts->EXT_transform_feedback, feats->transform_feedback, TRANSFORM_FEEDBACK_FEATURES_EXT, features2); @@ -504,6 +507,9 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) VN_ADD_EXT_TO_PNEXT(exts->EXT_subgroup_size_control, props->subgroup_size_control, SUBGROUP_SIZE_CONTROL_PROPERTIES, properties2); + VN_ADD_EXT_TO_PNEXT(exts->EXT_texel_buffer_alignment, + props->texel_buffer_alignment, + TEXEL_BUFFER_ALIGNMENT_PROPERTIES, properties2); /* EXT */ VN_ADD_EXT_TO_PNEXT( @@ -1071,6 +1077,7 @@ vn_physical_device_get_passthrough_extensions( .EXT_pipeline_creation_cache_control = true, .EXT_shader_demote_to_helper_invocation = true, .EXT_subgroup_size_control = true, + .EXT_texel_buffer_alignment = true, .EXT_texture_compression_astc_hdr = true, /* EXT */ @@ -1689,6 +1696,7 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, 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(TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, texel_buffer_alignment); CASE(TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, texture_compression_astc_hdr); CASE(ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, zero_initialize_workgroup_memory); @@ -1746,6 +1754,7 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, 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); + CASE(TEXEL_BUFFER_ALIGNMENT_PROPERTIES, texel_buffer_alignment); /* 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 bfe9334188e..9fedaa42683 100644 --- a/src/virtio/vulkan/vn_physical_device.h +++ b/src/virtio/vulkan/vn_physical_device.h @@ -54,6 +54,7 @@ struct vn_physical_device_features { primitive_topology_list_restart; VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex; VkPhysicalDeviceRobustness2FeaturesEXT robustness_2; + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT texel_buffer_alignment; VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback; VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT vertex_attribute_divisor; }; @@ -69,6 +70,7 @@ struct vn_physical_device_properties { VkPhysicalDeviceShaderIntegerDotProductProperties shader_integer_dot_product; VkPhysicalDeviceSubgroupSizeControlProperties subgroup_size_control; + VkPhysicalDeviceTexelBufferAlignmentProperties texel_buffer_alignment; /* EXT */ VkPhysicalDeviceConservativeRasterizationPropertiesEXT