Module: wine Branch: master Commit: ca64275a237729bb1a645f918a9551cf20d01b6f URL: https://gitlab.winehq.org/wine/wine/-/commit/ca64275a237729bb1a645f918a9551c...
Author: Zebediah Figura zfigura@codeweavers.com Date: Wed Sep 13 19:56:03 2023 -0500
wined3d: Enable EXT_extended_dynamic_state3.
---
dlls/wined3d/adapter_vk.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 7b4bf898fd1..b31e65cde58 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -243,6 +243,7 @@ struct wined3d_physical_device_info { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT dynamic_state_features; VkPhysicalDeviceExtendedDynamicState2FeaturesEXT dynamic_state2_features; + VkPhysicalDeviceExtendedDynamicState3FeaturesEXT dynamic_state3_features; VkPhysicalDeviceHostQueryResetFeatures host_query_reset_features; VkPhysicalDeviceShaderDrawParametersFeatures draw_parameters_features; VkPhysicalDeviceTransformFeedbackFeaturesEXT xfb_features; @@ -253,6 +254,7 @@ struct wined3d_physical_device_info
static void wined3d_disable_vulkan_features(struct wined3d_physical_device_info *info) { + VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *dynamic_state3 = &info->dynamic_state3_features; VkPhysicalDeviceFeatures *features = &info->features2.features;
features->depthBounds = VK_FALSE; @@ -280,6 +282,31 @@ static void wined3d_disable_vulkan_features(struct wined3d_physical_device_info features->sparseResidency16Samples = VK_FALSE; features->sparseResidencyAliased = VK_FALSE; features->inheritedQueries = VK_FALSE; + + dynamic_state3->extendedDynamicState3AlphaToOneEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3ColorBlendAdvanced = VK_FALSE; + dynamic_state3->extendedDynamicState3ConservativeRasterizationMode = VK_FALSE; + dynamic_state3->extendedDynamicState3CoverageModulationMode = VK_FALSE; + dynamic_state3->extendedDynamicState3CoverageModulationTable = VK_FALSE; + dynamic_state3->extendedDynamicState3CoverageModulationTableEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3CoverageReductionMode = VK_FALSE; + dynamic_state3->extendedDynamicState3CoverageToColorEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3CoverageToColorLocation = VK_FALSE; + dynamic_state3->extendedDynamicState3DepthClipEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3DepthClipNegativeOneToOne = VK_FALSE; + dynamic_state3->extendedDynamicState3ExtraPrimitiveOverestimationSize = VK_FALSE; + dynamic_state3->extendedDynamicState3LineRasterizationMode = VK_FALSE; + dynamic_state3->extendedDynamicState3LineStippleEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3LogicOpEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3PolygonMode = VK_FALSE; + dynamic_state3->extendedDynamicState3ProvokingVertexMode = VK_FALSE; + dynamic_state3->extendedDynamicState3RasterizationStream = VK_FALSE; + dynamic_state3->extendedDynamicState3RepresentativeFragmentTestEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3SampleLocationsEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3ShadingRateImageEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3TessellationDomainOrigin = VK_FALSE; + dynamic_state3->extendedDynamicState3ViewportWScalingEnable = VK_FALSE; + dynamic_state3->extendedDynamicState3ViewportSwizzle = VK_FALSE; }
static struct wined3d_allocator_chunk *wined3d_allocator_vk_create_chunk(struct wined3d_allocator *allocator, @@ -339,6 +366,7 @@ static const struct wined3d_allocator_ops wined3d_allocator_vk_ops = static void get_physical_device_info(const struct wined3d_adapter_vk *adapter_vk, struct wined3d_physical_device_info *info) { VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *vertex_divisor_features = &info->vertex_divisor_features; + VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *dynamic_state3_features = &info->dynamic_state3_features; VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *dynamic_state2_features = &info->dynamic_state2_features; VkPhysicalDeviceShaderDrawParametersFeatures *draw_parameters_features = &info->draw_parameters_features; VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *dynamic_state_features = &info->dynamic_state_features; @@ -365,8 +393,11 @@ static void get_physical_device_info(const struct wined3d_adapter_vk *adapter_vk host_query_reset_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES; host_query_reset_features->pNext = vertex_divisor_features;
+ dynamic_state3_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT; + dynamic_state3_features->pNext = host_query_reset_features; + dynamic_state2_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT; - dynamic_state2_features->pNext = host_query_reset_features; + dynamic_state2_features->pNext = dynamic_state3_features;
dynamic_state_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; dynamic_state_features->pNext = dynamic_state2_features; @@ -2374,6 +2405,7 @@ static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk { {VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_API_VERSION_1_3}, {VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_API_VERSION_1_3}, + {VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, ~0u}, {VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_API_VERSION_1_2}, {VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, ~0u}, {VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, ~0u},