diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-08-28 01:37:40 +0200 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-09-16 17:59:20 +0200 |
commit | b99f94a7ffab0698f209bf1b39d337940bc40e50 (patch) | |
tree | e5d3c3348ea579760276b6d7bb7fd10a98fe0910 /src/video_core | |
parent | Vulkan: Implement Depth Bias Control (diff) | |
download | yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.tar yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.tar.gz yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.tar.bz2 yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.tar.lz yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.tar.xz yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.tar.zst yuzu-b99f94a7ffab0698f209bf1b39d337940bc40e50.zip |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 3 | ||||
-rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 7 | ||||
-rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 0201c4d08..59b87807b 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1050,6 +1050,9 @@ void RasterizerVulkan::UpdateDepthBias(Tegra::Engines::Maxwell3D::Regs& regs) { if (device.IsExtDepthBiasControlSupported()) { return true; } + if (!Settings::values.renderer_amdvlk_depth_bias_workaround) { + return false; + } // the base formulas can be obtained from here: // https://docs.microsoft.com/en-us/windows/win32/direct3d11/d3d10-graphics-programming-guide-output-merger-stage-depth-bias const double rescale_factor = diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 617417040..835a1338b 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1051,6 +1051,13 @@ void Device::RemoveUnsuitableExtensions() { RemoveExtensionFeatureIfUnsuitable(extensions.custom_border_color, features.custom_border_color, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME); + // VK_EXT_depth_bias_control + extensions.depth_bias_control = + features.depth_bias_control.depthBiasControl && + features.depth_bias_control.leastRepresentableValueForceUnormRepresentation; + RemoveExtensionFeatureIfUnsuitable(extensions.depth_bias_control, features.depth_bias_control, + VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME); + // VK_EXT_depth_clip_control extensions.depth_clip_control = features.depth_clip_control.depthClipControl; RemoveExtensionFeatureIfUnsuitable(extensions.depth_clip_control, features.depth_clip_control, diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 2063f58b5..eb314fe33 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -456,8 +456,7 @@ public: /// Returns true if the device supports VK_EXT_depth_bias_control. bool IsExtDepthBiasControlSupported() const { - return extensions.depth_bias_control && features.depth_bias_control.depthBiasControl && - features.depth_bias_control.leastRepresentableValueForceUnormRepresentation; + return extensions.depth_bias_control; } /// Returns true if the device supports VK_EXT_shader_viewport_index_layer. |