mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 10:56:58 +02:00
graphics: clamp raster depth after polygon offset
Enable native Vulkan depth clamping independently of guest depth clipping
This commit is contained in:
@@ -368,6 +368,8 @@ void CreatePipelineInternal(GraphicContext& graphics, PipelineCache::Pipeline& p
|
|||||||
// MoltenVK lacks VK_EXT_depth_clip_enable; omit the depth-clip struct on macOS and accept
|
// MoltenVK lacks VK_EXT_depth_clip_enable; omit the depth-clip struct on macOS and accept
|
||||||
// Vulkan's default depth clipping (enabled) instead of the PS5's clamp behavior.
|
// Vulkan's default depth clipping (enabled) instead of the PS5's clamp behavior.
|
||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
|
// The DB clamps depth to the viewport range after polygon offset is applied.
|
||||||
|
rasterizer.depthClampEnable = VK_TRUE;
|
||||||
rasterizer.pNext = &clip_ext;
|
rasterizer.pNext = &clip_ext;
|
||||||
#endif
|
#endif
|
||||||
vk::PipelineRasterizationProvokingVertexStateCreateInfoEXT provoking_vertex {};
|
vk::PipelineRasterizationProvokingVertexStateCreateInfoEXT provoking_vertex {};
|
||||||
|
|||||||
@@ -238,6 +238,10 @@ static void VulkanFindPhysicalDevice(vk::Instance instance, vk::SurfaceKHR surfa
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
|
if (device_features2.features.depthClamp != VK_TRUE) {
|
||||||
|
LOGF("depthClamp is not supported\n");
|
||||||
|
skip_device = true;
|
||||||
|
}
|
||||||
if (fragment_barycentric.fragmentShaderBarycentric != VK_TRUE) {
|
if (fragment_barycentric.fragmentShaderBarycentric != VK_TRUE) {
|
||||||
LOGF("fragmentShaderBarycentric is not supported\n");
|
LOGF("fragmentShaderBarycentric is not supported\n");
|
||||||
skip_device = true;
|
skip_device = true;
|
||||||
@@ -607,6 +611,7 @@ static vk::Device VulkanCreateDevice(GraphicContext& graphics,
|
|||||||
device_features.robustBufferAccess = VK_TRUE;
|
device_features.robustBufferAccess = VK_TRUE;
|
||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
device_features.depthBounds = VK_TRUE; // unsupported by MoltenVK
|
device_features.depthBounds = VK_TRUE; // unsupported by MoltenVK
|
||||||
|
device_features.depthClamp = VK_TRUE;
|
||||||
#endif
|
#endif
|
||||||
device_features.shaderStorageImageWriteWithoutFormat = VK_TRUE;
|
device_features.shaderStorageImageWriteWithoutFormat = VK_TRUE;
|
||||||
device_features.shaderImageGatherExtended = VK_TRUE;
|
device_features.shaderImageGatherExtended = VK_TRUE;
|
||||||
|
|||||||
Reference in New Issue
Block a user