AMD Radeon users, at least some of them, are definitely aware of the infamous black screen bug. On several occasions, AMD has patched the problem only for it to come back again in some other form. Or perhaps that issue was never fixed as the root cause could never be found.
Like for example, a driver from October 2021 fixed the black screen issue on Polaris cards in Ubisoft's Assassins' Creed. Another one, almost a year later in September 2022, fixed the Enhanced Sync bug, and a month later, yet another black screen issue, this time on Windows 11 22H2, was resolved.
Besides the black screen issue, another related problem has been plaguing the Radeon cards for quite a while. This bug throws up the "AMD software has detected a driver timeout" TDR (Timeout Detection and Recovery) error pop-up which is extremely annoying for users as it can also lead to black screens, system crashes or hangs and freezes. The issue has been fixed in the recent past but users still report facing it from time to time.
To put an end to these TDR issues once and for all, AMD has devised a new developer tool called Radeon GPU Detective (RGD). Its version 1.0 was released today and it will work with RDNA 2 and RDNA 3 cards (RX 6000 and 7000 series) on DirectX 12 applications. Sadly, games and apps based on older DX11/ DX9 or Vulkan, and older Radeon GPUs based on RDNA 1 (RX 5000), and Polaris (RX 400/500) are not supported. The latest 23.7.2 driver is also required.
On its GPUOpen announcement post, AMD explains what RGD is and its use:
This first version of the tool supports analysis of GPU crashes on Windows (“TDRs”) in Direct3D® 12 applications and requires a RX 6000 series (RDNA™2) or RX 7000 series (RDNA™3) card, in addition to the latest public AMD Radeon Adrenalin Software.
The tool lets developers set the driver into Crash Analysis mode using the Radeon Developer Panel (RDP) before reproducing the crash. Upon crash, an analysis file is generated with details that can help shed light on the crash’s cause:
- Execution marker information indicating which render passes and draw calls were in progress during the crash.
- If the crash was determined to be caused by a page fault:
- The offending virtual address.
- Details about any resource (such as heaps, textures, and buffers) that resided in the offending virtual address, including resource names given by the developer.
- Timeline of memory events (such as Create, Destroy and Evict) filtered only for the relevant resources.