// iddcx.h
HRESULT IddCxAdapterDisplayConfigUpdate2(
IDDCX_ADAPTER AdapterObject,
const IDARG_IN_ADAPTERDISPLAYCONFIGUPDATE2 *pInArgs
);
View the official Windows Driver Kit DDI referenceNo description available.
A remote driver can call IddCxAdapterDisplayConfigUpdate2 to allow a client to tell the server how to update the monitor configuration.
AdapterObject[in] The IDDCX_ADAPTER object of the remote adapter that the display configuration is specified for.
pInArgs[in] Pointer to an IDARG_IN_ADAPTERDISPLAYCONFIGUPDATE2 structure containing input arguments to the function.
IddCxAdapterDisplayConfigUpdate2 returns STATUS_SUCCESS upon success; otherwise, it returns an appropriate error code.
A remote indirect display driver can call IddCxAdapterDisplayConfigUpdate2 to set the mode, colorimetry and other values that the OS should use for a specific monitor. Only remote drivers are able to call this function.
For more information about HDR support, see IddCx version 1.10 updates.
The IDDCX_DISPLAYCONFIGPATH2 structure is defined in such a way that not all information has to be provided in every call. For example, some paths may not supply colorimetry data if the color mode is not HDR or WCG, or IddCxAdapterDisplayConfigUpdate2 could be called to only update the SDR white level if no layout changes are required.
Controlling modes (setting the IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID flag for a path) has some additional rules and clarifications:
| Color mode | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_COLORIMETRY_VALID | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SDRWHITELEVEL_VALID |
|---|---|---|
| SDR | No | No |
| SDRWCG | Yes | No |
| HDR | Yes | Yes |
The first time a path is included in a IddCxAdapterDisplayConfigUpdate2 call has different requirements than subsequent times. The following table outlines the requirements.
| Path field | Required in initial call for path | Can be updated after initial call | How would Windows client get the info |
|---|---|---|---|
| Mode | Yes | Yes | QueryDisplayConfig will provide client display configuration and WM_DISPLAYCHANGE is sent when display config changes; AdvancedColorInfo.CurrentAdvancedColorKind will give a color mode |
| Scale factor | Yes | Yes | Drivers can use the method used for IddCxAdapterDisplayConfigUpdate |
| Physical size | Yes if no EDID passed | No | Not needed if EDID passed |
| Colorimetry | Yes for non SDR color mode | Yes | Most fields from corresponding AdvancedColorInfo fields |
| SDR white level | Yes for HDR color mode, default is 80 nits | Yes | AdvancedColorInfo.SdrWhiteLevelInNits, see DirectX with Advanced Color on HDR/SDR displays for more information |
Due to underlying OS functionality, the support for drivers requesting HDR and WCG color modes when running on Windows 11, version 22H2 September Update differs slightly from when running on the Windows platform release coming in 2024. A driver can use the IddCxGetVersion function to determine which OS they are running on. The following table describes which color modes a driver can request depending on the monitor descriptor previously provided to the OS:
| Edid type | 22H2 September Update possible color modes | Platform release in 2024 possible color modes |
|---|---|---|
| None | SDR, HDR | SDR, SDRWCG, HDR |
| SDR | SDR, SDRWCG | SDR, SDRWCG |
| HDR | SDR, HDR | SDR, SDRWCG, HDR |
Some examples of which paths to include in subsequent IddCxAdapterDisplayConfigUpdate2 calls follow. At the start of each scenario, a remote session has the following paths configured:
| Monitor | Resolution | Desktop position | Color mode |
|---|---|---|---|
| 1 | 1920x1080 @ 30Hz | 0,0 | SDR |
| 2 | 1024x768 @ 30Hz | 1024,0 | SDRWCG |
| 3 | 3840x2160 @ 30Hz | 0,1848 | HDR |
| Monitor | Flags | Details |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | Change the desktop position to -3840,0 |
| Monitor | Flags | Details |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | Set new color mode |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| Monitor | Flags | Details |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID, IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_COLORIMETRY_VALID, IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SDRWHITELEVEL_VALID | Set new color mode, colorimetry and SDR white level |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| Monitor | Flags | Details |
|---|---|---|
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SCALE_FACTOR_VALID | Set new scale factor |
| Monitor | Flags | Details |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| 2 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID, IDDCX_DISPLAYCONFIGPATH2_FLAGS_MONITOR_SCALE_FACTOR_VALID | No change to current mode data, set new scale factor |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | Change the desktop position to -3840,0 |
| Monitor | Flags | Details |
|---|---|---|
| 1 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
| 3 | IDDCX_DISPLAYCONFIGPATH2_FLAGS_MODE_VALID | No change to current mode data |
IDARG_IN_ADAPTERDISPLAYCONFIGUPDATE2