The latest version of Crimson ReLive software has a bug in Vulkan implementation (amdvlk32.dll) producing wrong depth buffering results.
When using a reverse-z technique (minDepth>maxDepth) depth isn't calculated properly.
More info about the technique:
Steps to reproduce:
- set viewport.minDepth=1.0f and viewport.maxDepth=0.0f with vkCmdSetViewport()
- render a triangle with depth=0.95f (for example)
- notice depth written to z-buffer is 0.0f instead of 0.05f
On NVIDIA hardware (GTX 960) this works correctly.
Tested (and reproducible) on:
AMD Graphics Card
- Radeon RX 560 (MSI Radeon RX 560 AERO ITX 4G OC)
Desktop or Laptop System
- Custom built desktop
- Windows 7 x64 / Windows 10 x64
Driver version installed
- Catalyst Crimson ReLive 17.7.2 and 17.10.1
- ASUS MX239H EFP
Motherboard + Bios Revision
- ASUS Z170-K (BIOS 3301)
- Intel i7 6700K
Power Supply Unit Make, Model & Wattage
- SilentiumPC Supremo FM2 Gold 750W
- 16GB DDR4
Depth format used
Please let me know if you need more info.
this is incorrect result meaning the problem is reproducible also on R7 series (green triangle should be on top).
There are 4 bitmaps in the repro "Release" folder you can use for comparision:
Pay attention to depth images as they present the source of the issue.
The repro application works this way:
1) it clears a depth buffer to 1.0f
2) it renders a green triangle with depth=0.95f (depth that should be written is 0.05f)
3) it renders a red triangle with depth=0.80f (depth that should be written is 0.20f)