AnsweredAssumed Answered

Bug in AMD Vulkan implementation

Question asked by thom on Oct 20, 2017
Latest reply on Jul 25, 2018 by xhuang

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.

Outcomes