1 Reply Latest reply on Oct 24, 2017 7:16 AM by thom

    Bug in AMD Vulkan implementation

    thom

      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.