feat(driver): pf-vdisplay IOCTL_UPDATE_MODES — live monitor mode-list refresh (proto v4)
Latency plan P2.1 (design/first-frame-and-resize-latency.md): a new additive control-plane op lets the host refresh a LIVE monitor's advertised target-mode list to lead with an arbitrary new mode (IddCxMonitorUpdateModes2 — the same IddCx 1.10 *2 family this driver already requires, so no new OS floor). This removes the 'mode list frozen at ADD' constraint that forced the mid-stream resize through a REMOVE->ADD monitor hotplug: the monitor's OS identity, its swap-chain worker and the retained FrameStash all survive an in-place mode set. Protocol v4 is ADDITIVE over v3: the host's handshake floor stays at v3 (MIN_DRIVER_PROTOCOL_VERSION) and gates the in-place path on the reported version, keeping re-arrival as the permanent fallback. The driver's stored mode list is swapped before the DDI and reverted if it fails, so the OS and the mode-DDI callbacks always agree. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -140,6 +140,16 @@ iddcx_ddi!(
|
||||
in_args: *const iddcx::IDARG_IN_ADAPTERSETRENDERADAPTER,
|
||||
) @ IddCxAdapterSetRenderAdapterTableIndex as PFN_IDDCXADAPTERSETRENDERADAPTER -> ()
|
||||
);
|
||||
iddcx_ddi!(
|
||||
/// Refresh a LIVE monitor's target-mode list (the HDR `*2` variant, IddCx 1.10 — the same API
|
||||
/// family as the `*2` mode/buffer DDIs this driver already requires): the OS re-evaluates which
|
||||
/// modes the target supports WITHOUT a monitor departure, so the host can then mode-set to a
|
||||
/// freshly-advertised mode in place (the mid-stream resize, latency plan P2).
|
||||
IddCxMonitorUpdateModes2(
|
||||
monitor: iddcx::IDDCX_MONITOR,
|
||||
in_args: *const iddcx::IDARG_IN_UPDATEMODES2,
|
||||
) @ IddCxMonitorUpdateModes2TableIndex as PFN_IDDCXMONITORUPDATEMODES2
|
||||
);
|
||||
iddcx_ddi!(
|
||||
/// Bind a D3D device to an assigned swap-chain. HRESULT-shaped (0x887A0026 → retry on monitor flap).
|
||||
IddCxSwapChainSetDevice(
|
||||
|
||||
Reference in New Issue
Block a user