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:
- https://www.khronos.org/registry/vulkan/specs/1.0/man/html/VkViewport.html
- https://software.intel.com/en-us/articles/api-without-secrets-introduction-to-vulkan-part-3
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
Operating System
- Windows 7 x64 / Windows 10 x64
Driver version installed
- Catalyst Crimson ReLive 17.7.2 and 17.10.1
Display Devices
- ASUS MX239H EFP
Motherboard + Bios Revision
- ASUS Z170-K (BIOS 3301)
CPU/APU
- Intel i7 6700K
Power Supply Unit Make, Model & Wattage
- SilentiumPC Supremo FM2 Gold 750W
RAM
- 16GB DDR4
Depth format used
- VK_FORMAT_D32_SFLOAT_S8_UINT
Please let me know if you need more info.