mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-13 19:29:14 +01:00
[dxvk] Enable VK_EXT_extended_dynamic_state_3 if available
This commit is contained in:
parent
859de7e828
commit
8e7ea899d2
@ -335,13 +335,14 @@ namespace dxvk {
|
||||
DxvkDeviceFeatures enabledFeatures) {
|
||||
DxvkDeviceExtensions devExtensions;
|
||||
|
||||
std::array<DxvkExt*, 23> devExtensionList = {{
|
||||
std::array<DxvkExt*, 24> devExtensionList = {{
|
||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||
&devExtensions.amdShaderFragmentMask,
|
||||
&devExtensions.extAttachmentFeedbackLoopLayout,
|
||||
&devExtensions.extConservativeRasterization,
|
||||
&devExtensions.extCustomBorderColor,
|
||||
&devExtensions.extDepthClipEnable,
|
||||
&devExtensions.extExtendedDynamicState3,
|
||||
&devExtensions.extFragmentShaderInterlock,
|
||||
&devExtensions.extFullScreenExclusive,
|
||||
&devExtensions.extGraphicsPipelineLibrary,
|
||||
@ -487,6 +488,11 @@ namespace dxvk {
|
||||
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
|
||||
}
|
||||
|
||||
if (devExtensions.extExtendedDynamicState3) {
|
||||
enabledFeatures.extExtendedDynamicState3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
|
||||
enabledFeatures.extExtendedDynamicState3.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extExtendedDynamicState3);
|
||||
}
|
||||
|
||||
if (devExtensions.extFragmentShaderInterlock) {
|
||||
enabledFeatures.extFragmentShaderInterlock.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
|
||||
enabledFeatures.extFragmentShaderInterlock.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extFragmentShaderInterlock);
|
||||
@ -737,6 +743,11 @@ namespace dxvk {
|
||||
m_deviceInfo.extCustomBorderColor.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.extCustomBorderColor);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME)) {
|
||||
m_deviceInfo.extExtendedDynamicState3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT;
|
||||
m_deviceInfo.extExtendedDynamicState3.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.extExtendedDynamicState3);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) {
|
||||
m_deviceInfo.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT;
|
||||
m_deviceInfo.extGraphicsPipelineLibrary.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.extGraphicsPipelineLibrary);
|
||||
@ -815,6 +826,11 @@ namespace dxvk {
|
||||
m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME)) {
|
||||
m_deviceFeatures.extExtendedDynamicState3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
|
||||
m_deviceFeatures.extExtendedDynamicState3.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extExtendedDynamicState3);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME)) {
|
||||
m_deviceFeatures.extFragmentShaderInterlock.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
|
||||
m_deviceFeatures.extFragmentShaderInterlock.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extFragmentShaderInterlock);
|
||||
@ -980,6 +996,8 @@ namespace dxvk {
|
||||
"\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0",
|
||||
"\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
|
||||
"\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0",
|
||||
"\n", VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME,
|
||||
"\n extendedDynamicState3DepthClipEnable : ", features.extExtendedDynamicState3.extendedDynamicState3DepthClipEnable ? "1" : "0",
|
||||
"\n", VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME,
|
||||
"\n fragmentShaderSampleInterlock : ", features.extFragmentShaderInterlock.fragmentShaderSampleInterlock ? "1" : "0",
|
||||
"\n fragmentShaderPixelInterlock : ", features.extFragmentShaderInterlock.fragmentShaderPixelInterlock ? "1" : "0",
|
||||
|
@ -19,6 +19,7 @@ namespace dxvk {
|
||||
VkPhysicalDeviceVulkan13Properties vk13;
|
||||
VkPhysicalDeviceConservativeRasterizationPropertiesEXT extConservativeRasterization;
|
||||
VkPhysicalDeviceCustomBorderColorPropertiesEXT extCustomBorderColor;
|
||||
VkPhysicalDeviceExtendedDynamicState3PropertiesEXT extExtendedDynamicState3;
|
||||
VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT extGraphicsPipelineLibrary;
|
||||
VkPhysicalDeviceRobustness2PropertiesEXT extRobustness2;
|
||||
VkPhysicalDeviceTransformFeedbackPropertiesEXT extTransformFeedback;
|
||||
@ -43,6 +44,7 @@ namespace dxvk {
|
||||
VkBool32 extConservativeRasterization;
|
||||
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
||||
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT extExtendedDynamicState3;
|
||||
VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT extFragmentShaderInterlock;
|
||||
VkBool32 extFullScreenExclusive;
|
||||
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary;
|
||||
|
@ -282,6 +282,7 @@ namespace dxvk {
|
||||
DxvkExt extConservativeRasterization = { VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt extExtendedDynamicState3 = { VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt extFullScreenExclusive = { VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt extFragmentShaderInterlock = { VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt extGraphicsPipelineLibrary = { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
|
@ -358,6 +358,24 @@ namespace dxvk::vk {
|
||||
VULKAN_FN(vkSetDebugUtilsObjectTagEXT);
|
||||
#endif
|
||||
|
||||
#ifdef VK_EXT_extended_dynamic_state3
|
||||
VULKAN_FN(vkCmdSetTessellationDomainOriginEXT);
|
||||
VULKAN_FN(vkCmdSetDepthClampEnableEXT);
|
||||
VULKAN_FN(vkCmdSetPolygonModeEXT);
|
||||
VULKAN_FN(vkCmdSetRasterizationSamplesEXT);
|
||||
VULKAN_FN(vkCmdSetSampleMaskEXT);
|
||||
VULKAN_FN(vkCmdSetAlphaToCoverageEnableEXT);
|
||||
VULKAN_FN(vkCmdSetAlphaToOneEnableEXT);
|
||||
VULKAN_FN(vkCmdSetLogicOpEnableEXT);
|
||||
VULKAN_FN(vkCmdSetColorBlendEnableEXT);
|
||||
VULKAN_FN(vkCmdSetColorBlendEquationEXT);
|
||||
VULKAN_FN(vkCmdSetColorWriteMaskEXT);
|
||||
VULKAN_FN(vkCmdSetRasterizationStreamEXT);
|
||||
VULKAN_FN(vkCmdSetConservativeRasterizationModeEXT);
|
||||
VULKAN_FN(vkCmdSetExtraPrimitiveOverestimationSizeEXT);
|
||||
VULKAN_FN(vkCmdSetDepthClipEnableEXT);
|
||||
#endif
|
||||
|
||||
#ifdef VK_EXT_full_screen_exclusive
|
||||
VULKAN_FN(vkAcquireFullScreenExclusiveModeEXT);
|
||||
VULKAN_FN(vkReleaseFullScreenExclusiveModeEXT);
|
||||
|
Loading…
x
Reference in New Issue
Block a user