mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-31 14:52:11 +01:00
[dxvk] Enable VK_EXT_fragment_shader_interlock
This commit is contained in:
parent
0bb0c1e646
commit
9532126f7c
@ -335,13 +335,14 @@ namespace dxvk {
|
|||||||
DxvkDeviceFeatures enabledFeatures) {
|
DxvkDeviceFeatures enabledFeatures) {
|
||||||
DxvkDeviceExtensions devExtensions;
|
DxvkDeviceExtensions devExtensions;
|
||||||
|
|
||||||
std::array<DxvkExt*, 22> devExtensionList = {{
|
std::array<DxvkExt*, 23> devExtensionList = {{
|
||||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||||
&devExtensions.amdShaderFragmentMask,
|
&devExtensions.amdShaderFragmentMask,
|
||||||
&devExtensions.extAttachmentFeedbackLoopLayout,
|
&devExtensions.extAttachmentFeedbackLoopLayout,
|
||||||
&devExtensions.extConservativeRasterization,
|
&devExtensions.extConservativeRasterization,
|
||||||
&devExtensions.extCustomBorderColor,
|
&devExtensions.extCustomBorderColor,
|
||||||
&devExtensions.extDepthClipEnable,
|
&devExtensions.extDepthClipEnable,
|
||||||
|
&devExtensions.extFragmentShaderInterlock,
|
||||||
&devExtensions.extFullScreenExclusive,
|
&devExtensions.extFullScreenExclusive,
|
||||||
&devExtensions.extGraphicsPipelineLibrary,
|
&devExtensions.extGraphicsPipelineLibrary,
|
||||||
&devExtensions.extMemoryBudget,
|
&devExtensions.extMemoryBudget,
|
||||||
@ -482,6 +483,11 @@ namespace dxvk {
|
|||||||
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
|
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
if (devExtensions.extFullScreenExclusive)
|
if (devExtensions.extFullScreenExclusive)
|
||||||
enabledFeatures.extFullScreenExclusive = VK_TRUE;
|
enabledFeatures.extFullScreenExclusive = VK_TRUE;
|
||||||
|
|
||||||
@ -805,6 +811,11 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable);
|
m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME))
|
if (m_deviceExtensions.supports(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME))
|
||||||
m_deviceFeatures.extFullScreenExclusive = VK_TRUE;
|
m_deviceFeatures.extFullScreenExclusive = VK_TRUE;
|
||||||
|
|
||||||
@ -965,6 +976,9 @@ namespace dxvk {
|
|||||||
"\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0",
|
"\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0",
|
||||||
"\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
|
"\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
|
||||||
"\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0",
|
"\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0",
|
||||||
|
"\n", VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME,
|
||||||
|
"\n fragmentShaderSampleInterlock : ", features.extFragmentShaderInterlock.fragmentShaderSampleInterlock ? "1" : "0",
|
||||||
|
"\n fragmentShaderPixelInterlock : ", features.extFragmentShaderInterlock.fragmentShaderPixelInterlock ? "1" : "0",
|
||||||
"\n", VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
"\n", VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
||||||
"\n extension supported : ", features.extFullScreenExclusive ? "1" : "0",
|
"\n extension supported : ", features.extFullScreenExclusive ? "1" : "0",
|
||||||
"\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME,
|
"\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME,
|
||||||
|
@ -43,6 +43,7 @@ namespace dxvk {
|
|||||||
VkBool32 extConservativeRasterization;
|
VkBool32 extConservativeRasterization;
|
||||||
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
||||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
||||||
|
VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT extFragmentShaderInterlock;
|
||||||
VkBool32 extFullScreenExclusive;
|
VkBool32 extFullScreenExclusive;
|
||||||
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary;
|
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary;
|
||||||
VkBool32 extMemoryBudget;
|
VkBool32 extMemoryBudget;
|
||||||
|
@ -283,6 +283,7 @@ namespace dxvk {
|
|||||||
DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_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 extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt extFullScreenExclusive = { VK_EXT_FULL_SCREEN_EXCLUSIVE_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 };
|
DxvkExt extGraphicsPipelineLibrary = { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt extMemoryBudget = { VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, DxvkExtMode::Passive };
|
DxvkExt extMemoryBudget = { VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, DxvkExtMode::Passive };
|
||||||
DxvkExt extMemoryPriority = { VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt extMemoryPriority = { VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user