IDD-push: streaming game capture without Desktop Duplication or WGC
Most self-hosted streaming hosts capture your screen with Desktop Duplication (DDA) or Windows.Graphics.Capture (WGC) — and inherit their blind spots. punktfunk captures a different way: the virtual display driver pushes finished frames straight to the encoder.
Every game-streaming host has to answer one question before anything else: how do you get the game’s frames off the GPU and into the encoder? Most self-hosted hosts — Sunshine, Apollo, Parsec — answer it with Desktop Duplication (DDA) or Windows.Graphics.Capture (WGC). punktfunk answers it differently, and it removes a whole class of problems.
How everyone else captures: DDA and WGC
DDA (DXGI Desktop Duplication) and WGC both pull the finished desktop image out of the Windows compositor after it’s drawn. They work, but each has well-known blind spots — which is why Sunshine setups often run a helper that switches between WGC and DDA depending on what’s on screen:
- WGC can’t see the lock screen or UAC prompts — they show up as a black or frozen frame, so you can’t log in or approve an elevation prompt remotely.
- DDA chokes on modern HDR/overlay paths — when Windows promotes content to hardware overlay planes (HDR animations, some frame-generation paths), DDA can return a frozen image or storm with
ACCESS_LOSTerrors and rebuild repeatedly. - Both add GPU work — the capture is an extra read and copy of the composed frame, on a GPU that’s already busy rendering the game.
How punktfunk captures: IDD-push
punktfunk streams onto its own virtual display, created by a display driver we wrote. Because we own the driver, we don’t need to pull frames back out of Windows at all — the driver pushes each finished frame straight to the host. The composited frame lands in a small shared-memory ring of GPU textures, and the host hands those textures directly to the hardware encoder (NVENC) with no extra copy. We call it IDD-push, after Windows’ Indirect Display Driver model.
What that buys you
- The lock screen and UAC just work. The driver sees the composited desktop even at the Windows login / lock / UAC screen, so you can sign in and approve elevation prompts over the stream — no capture-method switching, no black frames.
- No DDA↔WGC dance. One capture path handles everything, so there’s nothing to auto-switch and nothing to break when an overlay or HDR animation appears.
- Zero-copy and pipelined. Frames go driver → shared ring → encoder with no detour through system memory; converting one frame overlaps encoding the previous one, keeping per-frame time low.
- HDR-safe. The same path carries 10-bit HDR (P010 / BT.2020 PQ) — see HDR game streaming that looks like HDR.
If the host ever runs on a PC without our driver, it falls back to WGC/DDA automatically — IDD-push is the fast path, not the only path.
Why it matters
Capturing the screen sounds like a solved problem, but the standard tools were built for screenshots and video calls, not for streaming a locked, HDR, overlay-heavy gaming desktop at high frame rates. Owning the display driver lets punktfunk skip that whole layer. For the driver side of the story, see why we wrote our own virtual display driver.