diff options
author | riperiperi <rhy3756547@hotmail.com> | 2023-01-19 00:30:42 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-19 00:30:42 +0000 |
commit | de3134adbec9e35eba08dbb835c38bc305d2c150 (patch) | |
tree | c13bbb11f7e9fbbc8dbf303f8f15f40352e0f39d /Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | |
parent | 36d53819a473d195f9efd1253b2421e8670f6c84 (diff) |
Vulkan: Explicitly enable precise occlusion queries (#4292)1.1.574
The only guarantee of the occlusion query type in Vulkan is that it will be zero when no samples pass, and non-zero when any samples pass. Of course, most GPUs implement this by just placing the # of samples in the result and calling it a day. However, this lax restriction means that GPUs could just report a boolean (1/0) or report a value after one is recorded, but before all samples have been counted.
MoltenVK falls in the first category - by default it only reports 1/0 for occlusion queries. Thankfully, there is a feature and flag that you can use to force compatible drivers to provide a "precise" query result, that being the real # of samples passed.
Should fix ink collision in Splatoon 2/3 on MoltenVK.
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/VulkanRenderer.cs')
-rw-r--r-- | Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index f1922efe..bec7b847 100644 --- a/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -270,6 +270,7 @@ namespace Ryujinx.Graphics.Vulkan supportedExtensions.Contains(KhrPushDescriptor.ExtensionName), supportsTransformFeedback, propertiesTransformFeedback.TransformFeedbackQueries, + features2.Features.OcclusionQueryPrecise, supportedFeatures.GeometryShader, propertiesSubgroupSizeControl.MinSubgroupSize, propertiesSubgroupSizeControl.MaxSubgroupSize, |