Uneven banding in fullscreen HDR output with R10G10B10A2 swapchain

Hi there,

I am working on HDR output support in the Godot game engine and have come across an unexpected behaviour in NVIDIA Windows drivers that I cannot reproduce with other GPU drivers, such as AMD integrated graphics or Intel integrated graphics.

Initially I believed this issue might be better posted in the drivers category, but after more testing I have found that this issue seems to be specific to DXGI swapchains; I am not able to reproduce the same severity of banding with a Vulkan HDR swapchain using equivalent configurations.

The issue that I am experiencing can be reproduced using an unmodified version of Microsoft’s D3D12 HDR output sample project. To reproduce the issue:

  1. Use a high-quality HDR monitor that supports 10-bit full range RGB, such as the Asus PA32UCDM
  2. Ensure HDMI output to the monitor is full range RGB, 10-bit HDR
  3. Run the sample project
  4. Press spacebar to enter full screen mode and use Pg Up / Pg Down to compare DXGI_FORMAT_R10G10B10A2_UNORM and DXGI_FORMAT_R16G16B16A16_FLOAT
  5. Note that uneven banding that is not related to 10-bit quantization is visible on the gradients with DXGI_FORMAT_R10G10B10A2_UNORM
  6. Press spacebar to leave full screen mode
  7. Note that the uneven banding is no longer visible, no matter what size the window is

I have also created a modified version of this sample project that makes the issue more visible. This modified version can be found here: GitHub - allenwp/DirectX-Graphics-Samples at banding-test-pattern

The following image shows eight photos of different swapchain formats with NVIDIA Intel, and AMD drivers, showing that the issue is specific to NVIDIA drivers:

I have reproduced this issue on two different computers with Windows 11 Pro Version 10.0.26100 Build 26100 with an NVIDIA GeForce RTX 5070 Ti with these driver versions:

Game ready: 581.08 and 577.0
Studio: 580.97

Some more notes:

  • Before installing these drivers, I have tried running CleanupTool_1.0.20.0.exe as an administrator and rebooted. https://developer.nvidia.com/cleanup-tool
  • Enabling Debug Mode from the NVIDIA control pannel does not change the behaviour
  • I am not aware of any overlays that may be running on my computer (NVIDIA Experience/App is not installed and Discord/Steam/etc are not running)

Thanks for your help,
Allen

banding with the dxgi R10G10B10A2 format means your gamma curve is wrong.

set the driver to reference mode.

Thanks for the suggestion, @Sora; I hadn’t tried reference mode yet.

Unfortunately, enabling “Override to reference mode” in the Desktop Colour Settings did not have any impact on this behaviour: even with reference mode enabled, the uneven banding is visible just the same as when reference mode is disabled.