aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
diff options
context:
space:
mode:
authorcstamford <christopherstamford@improbable.io>2023-05-28 22:31:56 +0100
committerGitHub <noreply@github.com>2023-05-28 23:31:56 +0200
commitdc0dbc50abdaedfdcca05e5a5c1a5f26f70e3b79 (patch)
tree76ab99437a90c49f81127af2c6225ad8af73aa4c /src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
parent994f4dc77db72c7dd796f594b7c1798895cdb33d (diff)
Add support for VK_EXT_depth_clip_control. (#5027)1.1.835
* Add support for VK_EXT_depth_clip_control. * Code review feedback Minor formatting Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Check .DepthClipControl to make sure the host actually supports the feature. * Review feedback: remove Vulkan platform switch, relying on QueryHostSupportsDepthClipControl to drive the behaviour - OpenGL returns true, and any future platforms that don't support the [-1, 1] depth mode can return false for the transformation. --------- Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs')
-rw-r--r--src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs b/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
index 499a9ef7..51a3b129 100644
--- a/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
+++ b/src/Ryujinx.Graphics.Vulkan/VulkanInitialization.cs
@@ -41,6 +41,7 @@ namespace Ryujinx.Graphics.Vulkan
"VK_EXT_subgroup_size_control",
"VK_NV_geometry_shader_passthrough",
"VK_NV_viewport_array2",
+ "VK_EXT_depth_clip_control",
"VK_KHR_portability_subset" // As per spec, we should enable this if present.
};
@@ -345,6 +346,17 @@ namespace Ryujinx.Graphics.Vulkan
features2.PNext = &supportedFeaturesRobustness2;
}
+ PhysicalDeviceDepthClipControlFeaturesEXT supportedFeaturesDepthClipControl = new PhysicalDeviceDepthClipControlFeaturesEXT()
+ {
+ SType = StructureType.PhysicalDeviceDepthClipControlFeaturesExt,
+ PNext = features2.PNext
+ };
+
+ if (physicalDevice.IsDeviceExtensionPresent("VK_EXT_depth_clip_control"))
+ {
+ features2.PNext = &supportedFeaturesDepthClipControl;
+ }
+
api.GetPhysicalDeviceFeatures2(physicalDevice.PhysicalDevice, &features2);
var supportedFeatures = features2.Features;
@@ -507,6 +519,21 @@ namespace Ryujinx.Graphics.Vulkan
pExtendedFeatures = &featuresCustomBorderColor;
}
+ PhysicalDeviceDepthClipControlFeaturesEXT featuresDepthClipControl;
+
+ if (physicalDevice.IsDeviceExtensionPresent("VK_EXT_depth_clip_control") &&
+ supportedFeaturesDepthClipControl.DepthClipControl)
+ {
+ featuresDepthClipControl = new PhysicalDeviceDepthClipControlFeaturesEXT()
+ {
+ SType = StructureType.PhysicalDeviceDepthClipControlFeaturesExt,
+ PNext = pExtendedFeatures,
+ DepthClipControl = true
+ };
+
+ pExtendedFeatures = &featuresDepthClipControl;
+ }
+
var enabledExtensions = _requiredExtensions.Union(_desirableExtensions.Intersect(physicalDevice.DeviceExtensions)).ToArray();
IntPtr* ppEnabledExtensions = stackalloc IntPtr[enabledExtensions.Length];