Mesa (main): venus: Advertise VK_EXT_extended_dynamic_state support

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 4 04:34:12 UTC 2022


Module: Mesa
Branch: main
Commit: dac3e6f3727a37c85aec8c80215fe90b68cfe9a4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dac3e6f3727a37c85aec8c80215fe90b68cfe9a4

Author: Omar Akkila <omar.akkila at collabora.com>
Date:   Fri Jan 28 01:20:19 2022 -0500

venus: Advertise VK_EXT_extended_dynamic_state support

Signed-off-by: Omar Akkila <omar.akkila at collabora.com>
Reviewed-by: Chia-I Wu <olvaffe at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14866>

---

 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;



More information about the mesa-commit mailing list