10-bit grayscale in windowed DirectX 9 app

I’m on a team working on a diagnostic imaging app that uses windowed Direct3D9 and we’re not able to make it display 10-bit grayscale on any NVIDIA hardware - Quadro or GeForce. It works on 10-bit enabled AMD GPUs. I’d like to understand if this is at all possible, and if we should do anything different for NVIDIA. I’ve read on some forum that it only works for fullscreen apps and an NVIDIA technical brief (“10 AND 12-BIT GRAYSCALE TECHNOLOGY”) from 2013 only talks about OpenGL. Troy on NVIDIA Customer Care L2 told me “Only Quadro class GPU’s support Windowed 10 bit rendering via d3d9. GeForce products do not support this feature. This functionality is expected to work with Quadro P600. I suggest you register with and contact Developer Relations for support with your application.” So here I am :)

The only difference in our app to enable 10-bit output is that we use back buffer format A2R10G10B10 for the swap chain. Other than that, the textures and shaders are the same. An L16 texture is used for the 10- or 12-bit medical images.

On the NVIDIA control panel/Display/Change resolution/3. Apply the following settings we have “Use NVIDIA color settings” and 10 bpc output color depth. Still no 10-bit output. Anything else we should check?

Hi Aron,

We are experiencing the same problem with 10-bit via d3d9 in Splash video player we are developing. Since we haven’t moved to d3d11 yet we wanted to display 10-bit HEVC video on 10-bit display by setting D3DFMT_A2R10G10B10 as the back-buffer format. But the 10-bit video is not displayed properly (the smooth gradients are corrupted). Maybe it’s because of this: https://docs.microsoft.com/en-us/windows/desktop/direct3d9/d3dformat#backbuffer-or-display-formats. It stated that A2R10G10B10 is allowed for back-buffer but ONLY in full-screen mode.