Skip to content

[Feature]: Expose SDR gamma-ramp capability for IddCx virtual monitors #512

Description

@evman

Is the feature related to a "problem"?

The virtual monitor works as the primary desktop display, but its desktop DC reports no GDI color-management capabilities:

HDC dc = GetDC(nullptr);
int caps = GetDeviceCaps(dc, COLORMGMTCAPS);
// Baseline result: 0

Applications using the standard GetDeviceGammaRamp / SetDeviceGammaRamp APIs therefore cannot use the VDD for SDR calibration or color-management workflows. This was reproduced on Windows 11 build 22631 with Virtual Display Driver 11.30.4.434, an NVIDIA RTX 5090 passthrough adapter, and the VDD as the only attached/primary desktop head at 3840x2160 @ 240 Hz.

Your suggestion

Please expose and implement SDR gamma-ramp support through IddCx for the virtual monitor:

  • Advertise IDDCX_FEATURE_IMPLEMENTATION_SOFTWARE through AdapterCaps.EndPointDiagnostics.GammaSupport.
  • Register/implement EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP for the 256-entry RGB ramp.
  • Apply the ramp in the VDD rendering path and handle reset/identity ramps.
  • Preserve existing custom EDID, HDR/SDR, high-refresh-rate, GPU-selection, and DXGI capture behavior.
  • Publish the change in a normally signed release.

Validation

I tested a source build changing only GammaSupport from NONE to SOFTWARE. The x64 and ARM64 builds completed in CI. On the VM, experimental driver 10.2.51.773 produced:

  • COLORMGMTCAPS: 2
  • CM_GAMMA_RAMP: set
  • GetDeviceGammaRamp: true
  • SetDeviceGammaRamp with a test ramp: true
  • SetDeviceGammaRamp with the identity ramp: true

The VDD stayed at 3840x2160@240, the NVIDIA stub stayed at 1024x768@60, both display devices remained OK, and Looking Glass remained running. The current callback still needs review because it acknowledges the request but does not yet apply the incoming ramp data to pixels.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions