10 Replies Latest reply on Jul 25, 2018 4:03 AM by xhuang

    Bug in AMD Vulkan implementation


      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)



      - 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.