From dac3e6f3727a37c85aec8c80215fe90b68cfe9a4 Mon Sep 17 00:00:00 2001 From: Omar Akkila Date: Fri, 28 Jan 2022 01:20:19 -0500 Subject: [PATCH] venus: Advertise VK_EXT_extended_dynamic_state support Signed-off-by: Omar Akkila Reviewed-by: Chia-I Wu Part-of: --- src/virtio/vulkan/vn_physical_device.c | 16 ++++++++++++++++ src/virtio/vulkan/vn_physical_device.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index 7f2ae31d360..3851c886972 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -154,6 +154,15 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) &physical_dev->transform_feedback_features; } + if (physical_dev->renderer_extensions.EXT_extended_dynamic_state) { + physical_dev->extended_dynamic_state_features.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; + physical_dev->extended_dynamic_state_features.pNext = + physical_dev->features.pNext; + physical_dev->features.pNext = + &physical_dev->extended_dynamic_state_features; + } + vn_call_vkGetPhysicalDeviceFeatures2( instance, vn_physical_device_to_handle(physical_dev), &physical_dev->features); @@ -954,6 +963,8 @@ vn_physical_device_get_passthrough_extensions( .EXT_separate_stencil_usage = true, .EXT_shader_viewport_index_layer = true, + /* promoted to VK_VERSION_1_3 */ + .EXT_extended_dynamic_state = true, /* EXT */ #ifndef ANDROID .EXT_image_drm_format_modifier = true, @@ -1629,6 +1640,7 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceVulkanMemoryModelFeatures *vulkan_memory_model; VkPhysicalDeviceTransformFeedbackFeaturesEXT *transform_feedback; + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *extended_dynamic_state; } u; u.pnext = (VkBaseOutStructure *)pFeatures; @@ -1790,6 +1802,10 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, &physical_dev->transform_feedback_features, sizeof(physical_dev->transform_feedback_features)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: + u.extended_dynamic_state->extendedDynamicState = + physical_dev->extended_dynamic_state_features.extendedDynamicState; + break; default: break; } diff --git a/src/virtio/vulkan/vn_physical_device.h b/src/virtio/vulkan/vn_physical_device.h index dac2d74e4d3..8aa6c773cfa 100644 --- a/src/virtio/vulkan/vn_physical_device.h +++ b/src/virtio/vulkan/vn_physical_device.h @@ -41,6 +41,8 @@ struct vn_physical_device { VkPhysicalDeviceVulkan11Features vulkan_1_1_features; VkPhysicalDeviceVulkan12Features vulkan_1_2_features; VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback_features; + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + extended_dynamic_state_features; VkPhysicalDeviceProperties2 properties; VkPhysicalDeviceVulkan11Properties vulkan_1_1_properties;