mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-11-03 20:24:43 +01:00 
			
		
		
		
	vk_device: Enable VK_EXT_extended_dynamic_state when available
This commit is contained in:
		
							parent
							
								
									3579db425e
								
							
						
					
					
						commit
						7527402a46
					
				
							
								
								
									
										2
									
								
								externals/Vulkan-Headers
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
								
							
						
						
									
										2
									
								
								externals/Vulkan-Headers
									
									
									
									
										vendored
									
									
								
							@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 9250d5ae8f50202005233dc0512a1d460c8b4833
 | 
					Subproject commit 8188e3fbbc105591064093440f88081fb957d4f0
 | 
				
			||||||
@ -313,6 +313,16 @@ bool VKDevice::Create() {
 | 
				
			|||||||
        LOG_INFO(Render_Vulkan, "Device doesn't support custom border colors");
 | 
					        LOG_INFO(Render_Vulkan, "Device doesn't support custom border colors");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT dynamic_state;
 | 
				
			||||||
 | 
					    if (ext_extended_dynamic_state) {
 | 
				
			||||||
 | 
					        dynamic_state.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
 | 
				
			||||||
 | 
					        dynamic_state.pNext = nullptr;
 | 
				
			||||||
 | 
					        dynamic_state.extendedDynamicState = VK_TRUE;
 | 
				
			||||||
 | 
					        SetNext(next, dynamic_state);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        LOG_INFO(Render_Vulkan, "Device doesn't support extended dynamic state");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!ext_depth_range_unrestricted) {
 | 
					    if (!ext_depth_range_unrestricted) {
 | 
				
			||||||
        LOG_INFO(Render_Vulkan, "Device doesn't support depth range unrestricted");
 | 
					        LOG_INFO(Render_Vulkan, "Device doesn't support depth range unrestricted");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -541,6 +551,7 @@ std::vector<const char*> VKDevice::LoadExtensions() {
 | 
				
			|||||||
    bool has_ext_subgroup_size_control{};
 | 
					    bool has_ext_subgroup_size_control{};
 | 
				
			||||||
    bool has_ext_transform_feedback{};
 | 
					    bool has_ext_transform_feedback{};
 | 
				
			||||||
    bool has_ext_custom_border_color{};
 | 
					    bool has_ext_custom_border_color{};
 | 
				
			||||||
 | 
					    bool has_ext_extended_dynamic_state{};
 | 
				
			||||||
    for (const auto& extension : physical.EnumerateDeviceExtensionProperties()) {
 | 
					    for (const auto& extension : physical.EnumerateDeviceExtensionProperties()) {
 | 
				
			||||||
        Test(extension, nv_viewport_swizzle, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, true);
 | 
					        Test(extension, nv_viewport_swizzle, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, true);
 | 
				
			||||||
        Test(extension, khr_uniform_buffer_standard_layout,
 | 
					        Test(extension, khr_uniform_buffer_standard_layout,
 | 
				
			||||||
@ -558,6 +569,8 @@ std::vector<const char*> VKDevice::LoadExtensions() {
 | 
				
			|||||||
             false);
 | 
					             false);
 | 
				
			||||||
        Test(extension, has_ext_custom_border_color, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME,
 | 
					        Test(extension, has_ext_custom_border_color, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME,
 | 
				
			||||||
             false);
 | 
					             false);
 | 
				
			||||||
 | 
					        Test(extension, has_ext_extended_dynamic_state,
 | 
				
			||||||
 | 
					             VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, false);
 | 
				
			||||||
        if (Settings::values.renderer_debug) {
 | 
					        if (Settings::values.renderer_debug) {
 | 
				
			||||||
            Test(extension, nv_device_diagnostics_config,
 | 
					            Test(extension, nv_device_diagnostics_config,
 | 
				
			||||||
                 VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME, true);
 | 
					                 VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME, true);
 | 
				
			||||||
@ -643,6 +656,19 @@ std::vector<const char*> VKDevice::LoadExtensions() {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (has_ext_extended_dynamic_state) {
 | 
				
			||||||
 | 
					        VkPhysicalDeviceExtendedDynamicStateFeaturesEXT dynamic_state;
 | 
				
			||||||
 | 
					        dynamic_state.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
 | 
				
			||||||
 | 
					        dynamic_state.pNext = nullptr;
 | 
				
			||||||
 | 
					        features.pNext = &dynamic_state;
 | 
				
			||||||
 | 
					        physical.GetFeatures2KHR(features);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (dynamic_state.extendedDynamicState) {
 | 
				
			||||||
 | 
					            extensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
 | 
				
			||||||
 | 
					            ext_extended_dynamic_state = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return extensions;
 | 
					    return extensions;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -182,6 +182,11 @@ public:
 | 
				
			|||||||
        return ext_custom_border_color;
 | 
					        return ext_custom_border_color;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Returns true if the device supports VK_EXT_extended_dynamic_state.
 | 
				
			||||||
 | 
					    bool IsExtExtendedDynamicStateSupported() const {
 | 
				
			||||||
 | 
					        return ext_extended_dynamic_state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Returns the vendor name reported from Vulkan.
 | 
					    /// Returns the vendor name reported from Vulkan.
 | 
				
			||||||
    std::string_view GetVendorName() const {
 | 
					    std::string_view GetVendorName() const {
 | 
				
			||||||
        return vendor_name;
 | 
					        return vendor_name;
 | 
				
			||||||
@ -239,6 +244,7 @@ private:
 | 
				
			|||||||
    bool ext_shader_viewport_index_layer{};    ///< Support for VK_EXT_shader_viewport_index_layer.
 | 
					    bool ext_shader_viewport_index_layer{};    ///< Support for VK_EXT_shader_viewport_index_layer.
 | 
				
			||||||
    bool ext_transform_feedback{};             ///< Support for VK_EXT_transform_feedback.
 | 
					    bool ext_transform_feedback{};             ///< Support for VK_EXT_transform_feedback.
 | 
				
			||||||
    bool ext_custom_border_color{};            ///< Support for VK_EXT_custom_border_color.
 | 
					    bool ext_custom_border_color{};            ///< Support for VK_EXT_custom_border_color.
 | 
				
			||||||
 | 
					    bool ext_extended_dynamic_state{};         ///< Support for VK_EXT_extended_dynamic_state.
 | 
				
			||||||
    bool nv_device_diagnostics_config{};       ///< Support for VK_NV_device_diagnostics_config.
 | 
					    bool nv_device_diagnostics_config{};       ///< Support for VK_NV_device_diagnostics_config.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Telemetry parameters
 | 
					    // Telemetry parameters
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user