vkd3d: Enable VK_EXT_extended_dynamic_state.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2020-06-24 11:33:57 +02:00
parent 9425b4d438
commit 926f2033a9
3 changed files with 17 additions and 0 deletions

View File

@ -90,6 +90,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] =
VK_EXTENSION(EXT_TEXEL_BUFFER_ALIGNMENT, EXT_texel_buffer_alignment),
VK_EXTENSION(EXT_TRANSFORM_FEEDBACK, EXT_transform_feedback),
VK_EXTENSION(EXT_VERTEX_ATTRIBUTE_DIVISOR, EXT_vertex_attribute_divisor),
VK_EXTENSION(EXT_EXTENDED_DYNAMIC_STATE, EXT_extended_dynamic_state),
/* AMD extensions */
VK_EXTENSION(AMD_SHADER_CORE_PROPERTIES, AMD_shader_core_properties),
VK_EXTENSION(AMD_SHADER_CORE_PROPERTIES_2, AMD_shader_core_properties2),
@ -642,6 +643,7 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
const struct vkd3d_vk_instance_procs *vk_procs = &device->vkd3d_instance->vk_procs;
VkPhysicalDeviceSubgroupSizeControlPropertiesEXT *subgroup_size_control_properties;
VkPhysicalDeviceInlineUniformBlockPropertiesEXT *inline_uniform_block_properties;
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *extended_dynamic_state_features;
VkPhysicalDeviceBufferDeviceAddressFeaturesKHR *buffer_device_address_features;
VkPhysicalDeviceCustomBorderColorPropertiesEXT *custom_border_color_properties;
VkPhysicalDeviceConditionalRenderingFeaturesEXT *conditional_rendering_features;
@ -703,6 +705,7 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
shader_subgroup_extended_types_features = &info->subgroup_extended_types_features;
robustness2_properties = &info->robustness2_properties;
robustness2_features = &info->robustness2_features;
extended_dynamic_state_features = &info->extended_dynamic_state_features;
info->features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
info->properties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
@ -832,6 +835,12 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
vk_prepend_struct(&info->properties2, vertex_divisor_properties);
}
if (vulkan_info->EXT_extended_dynamic_state)
{
extended_dynamic_state_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
vk_prepend_struct(&info->features2, extended_dynamic_state_features);
}
if (vulkan_info->AMD_shader_core_properties)
{
shader_core_properties->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;

View File

@ -133,6 +133,7 @@ struct vkd3d_vulkan_info
bool EXT_texel_buffer_alignment;
bool EXT_transform_feedback;
bool EXT_vertex_attribute_divisor;
bool EXT_extended_dynamic_state;
/* AMD device extensions */
bool AMD_shader_core_properties;
bool AMD_shader_core_properties2;
@ -1636,6 +1637,7 @@ struct vkd3d_physical_device_info
VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8_features;
VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR subgroup_extended_types_features;
VkPhysicalDeviceRobustness2FeaturesEXT robustness2_features;
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state_features;
VkPhysicalDeviceFeatures2 features2;
};

View File

@ -213,6 +213,12 @@ VK_DEVICE_EXT_PFN(vkCmdBindTransformFeedbackBuffersEXT)
VK_DEVICE_EXT_PFN(vkCmdEndQueryIndexedEXT)
VK_DEVICE_EXT_PFN(vkCmdEndTransformFeedbackEXT)
/* VK_EXT_extended_dynamic_state */
VK_DEVICE_EXT_PFN(vkCmdBindVertexBuffers2EXT)
VK_DEVICE_EXT_PFN(vkCmdSetPrimitiveTopologyEXT)
VK_DEVICE_EXT_PFN(vkCmdSetScissorWithCountEXT)
VK_DEVICE_EXT_PFN(vkCmdSetViewportWithCountEXT)
/* VK_KHR_surface */
VK_INSTANCE_EXT_PFN(vkGetPhysicalDeviceSurfacePresentModesKHR)
VK_INSTANCE_EXT_PFN(vkGetPhysicalDeviceSurfaceSupportKHR)