[d3d9] Avoid depth degenerate viewports

This commit is contained in:
Joshua Ashton 2021-08-11 12:24:50 +01:00 committed by Joshie
parent d221bb7a9c
commit f2950953e0
1 changed files with 6 additions and 2 deletions

View File

@ -5624,12 +5624,16 @@ namespace dxvk {
// Originally we did this only for powers of two
// resolutions but since NEAREST filtering fixed to
// truncate, we need to do this all the time now.
float cf = 0.5f - (1.0f / 128.0f);
constexpr float cf = 0.5f - (1.0f / 128.0f);
// How much to bias MinZ by to avoid a depth
// degenerate viewport.
constexpr float zBias = 0.001f;
viewport = VkViewport{
float(vp.X) + cf, float(vp.Height + vp.Y) + cf,
float(vp.Width), -float(vp.Height),
vp.MinZ, vp.MaxZ,
vp.MinZ, std::max(vp.MaxZ, vp.MinZ + zBias),
};
// Scissor rectangles. Vulkan does not provide an easy way