Blog

Warum wir unseren eigenen Treiber für virtuelle Displays fürs Game-Streaming geschrieben haben

Kopfloses Streaming braucht ein virtuelles Display — und die Treiber von der Stange kämpfen mit Secure Boot, lassen HDR aus und brauchen trotzdem einen separaten Capture-Schritt. Also haben wir einen eigenen geschrieben: einen signierten, komplett in Rust geschriebenen Windows-Display-Treiber, der in der exakten Auflösung deines Clients rendert, HDR trägt und den Encoder direkt füttert.

Um ein Spiel in der exakten Auflösung deines Handys, Tablets oder Handhelds zu streamen — und um einen PC ganz ohne angeschlossenen Monitor zu streamen — braucht der Host ein virtuelles Display, auf das das Spiel rendert. Die übliche Antwort ist, einen Treiber für virtuelle Displays von der Stange zu installieren. Wir haben das probiert, sind an seine Grenzen gestoßen und haben einen eigenen geschrieben.

Warum überhaupt ein virtuelles Display

  • Native Client-Auflösung. Das Spiel rendert in genau der Breite × Höhe und Bildrate deines Clients — ein Ultrawide-Handy, ein 16:10-Handheld, 120 Hz — statt vom Monitor des Hosts herunterskaliert oder mit Balken versehen zu werden. (Mehr dazu in Ultrawide-32:9-Streaming.)
  • Kopflos. An einer Streaming-Kiste hängt oft gar kein Monitor; ein virtuelles Display gibt Windows etwas zum Zusammensetzen.
  • Isolation. Die gestreamte Sitzung ist ihr eigenes Display, getrennt von allem anderen auf der Maschine.

Wo die Treiber von der Stange scheitern

  • Secure Boot + Signierung. Viele Community-Treiber für virtuelle Displays sind unsigniert oder lassen sich mit aktivem Secure Boot nur umständlich laden — ein wiederkehrender Support-Schmerz.
  • Kein echtes HDR. Die meisten bewerben HDR nicht korrekt, also behandelt das OS das virtuelle Display als SDR. (Eine verwandte Vulkan-HDR-Lücke mussten wir ebenfalls schließen — siehe den HDR-Fix.)
  • Capture bleibt angeflanscht. Sie geben dir ein Display, aber du musst es trotzdem mit Desktop Duplication oder WGC erfassen — mit all ihren blinden Flecken.

Was wir gebaut haben

punktfunk liefert pf-vdisplay: einen signierten, komplett in Rust geschriebenen Windows-Display-Treiber auf Basis des Indirect-Display-Driver-Modells (IddCx) von Windows. Er lädt sauber mit aktivem Secure Boot, stellt genau den Modus bereit, den dein Client anfordert (bis hin zu eigenen Bildraten), setzt für HDR in 10-Bit-FP16 zusammen und — entscheidend — ist zugleich die Capture-Quelle. Statt dass eine separate Capture-API Frames aus Windows zurückzieht, schiebt der Treiber jeden fertigen Frame direkt zum Encoder. Wir nennen das IDD-push.

Der Gewinn

Weil uns der Display-Treiber gehört, fallen drei sonst getrennte Dinge in einen Pfad zusammen, den wir durchgängig kontrollieren — das virtuelle Display, die HDR-Unterstützung und die Bildschirmerfassung. So streamt punktfunk in der nativen Auflösung deines Clients, in HDR, inklusive Windows-Sperrbildschirm, ohne einen Stapel von Workarounds. Den ganzen Überblick gibt die besten Self-Hosted-Game-Streaming-Setups 2026.