[API Oversight] NvAPI Missing Support for Testing G-Sync Status on Direct3D12 Surfaces

The set of APIs defined for testing a D3D SwapChain for G-Sync compatibility / active state appears to have never been updated to support D3D12 surfaces.

NvAPI_D3D_IsGSyncActive
NvAPI_D3D_IsGSyncCapable
NvAPI_D3D_GetObjectHandleForResource

These have been my goto solution for reporting G-Sync status to users in my overlay for years, they work well for D3D9/10/11, but I cannot get them to work using a SwapChain backbuffer that belongs to a D3D12 SwapChain.

I believe the API needs to be updated, my users are frustrated that I cannot report G-Sync status in their D3D12 games. I know that as a general rule, G-Sync engages when the SwapChain is:

  1. Flip Model
  2. Backbuffer Dimensions Match Containing Output
  3. No other window obscures the game

But rather than provide an educated guess on G-Sync engagement to users, it would be great if an actual status check using NvAPI were possible.


Is there some secret way to query G-Sync status in D3D12 that I just do not know about, or does the API need updating? Thank you.