Give microphone data priority over replaceable clock feedback and
reduce feedback traffic on the shared client-to-host FIFO.
Retry short FIFO stalls outside the realtime thread and coalesce
consecutive packets in the existing fixed Windows buffers.
Avoid one broker write per tiny PipeWire quantum without adding
allocations or intentional capture latency.
Advertise signed and floating-point 32-bit formats across mono,
stereo, quad, surround, 5.1, and 7.1 at every supported rate.
Carry sample encoding through the broker and LGMP protocol so integer
and floating-point streams remain distinct.
Expand packet, shared-memory, and ring capacity for eight-channel
32-bit audio.
Forward coalesced feedback through the broker to the render clock.
Keep capture independent and apply the rate to WaveRT timing.
Bound and slew targets, then restore unity when feedback stalls.
Withdraw feedback after the watchdog makes fallback safe.
Keep initial playback prewarming, but announce STOP when a stream that
has already run enters PAUSE or ACQUIRE. Restart it when RUN returns.
Keep RUN history across owner changes so a paused stream is not
mistaken for a new prewarm generation.
Only announce capture while it is running. Derive active status flags
from the stream generations successfully announced to the client.
Queue playback STOP, START, and DATA for the same wire generation.
Verify that the client creates a fresh local generation and delivers the
first restarted packet.
Persist hardware-ID installation for the LGAudio WDK project and
enable deployment in every existing solution configuration.
This allows LGAudio to run as the kernel-debugger startup project.
Treat the binding phase as the authoritative shutdown state after
graceful stream release.
Cover disconnect while the host drains and unbinds both streams.
Publish committed WaveRT render frames on a 4 kHz timer while keeping
packet completion and notification semantics unchanged.
Serialize clock sampling with position updates to prevent concurrent
queries from replaying elapsed time.
Scope the legacy latency offset to classic SPICE and use the LGMP
poll bound as its fixed arrival reserve. Keep learned jitter additive.
Select provider clock feedback only when the current remote endpoint
advertises it, avoiding a failed startup attempt on broker v1.
Move audio ingress and playback-credit recovery off the display timer.
Poll through a dedicated MMCSS worker at sub-millisecond intervals.
Wake capture retries immediately and drain queued client records during
release so backpressure cannot stall recording or shutdown.
Add optional playback and capture streams to the LGMP transport.
Negotiate ownership over the existing control path and keep audio
availability isolated from display transport readiness.
Route broker packets through public LGMP stream APIs without changing
the LGMP queue table or shared-memory mapping.
Open the optional audio broker from a passive worker and move bounded
playback and capture packets through a transport-neutral audio hub.
Attach audio sources after transport initialization without making audio
driver availability part of display transport readiness.
Expose cancel-safe direct-I/O queues for reading rendered frames and
writing captured frames through the private broker endpoint.
Separate render and capture storage, publish format and state
generations, and preserve local loopback while no broker is bound.
Advertise optional audio mediation separately from runtime driver
availability, then negotiate ownership through the existing LGMP
client-control path.
Define fixed playback and capture stream records for packed PCM,
endpoint state, clock feedback, and targeted descriptor discovery.
Keep the LGMP queue table, recovery sidecar, and submodule unchanged.
Expose a private, versioned control device that lets the IDD discover
and claim the active audio adapter without using the public PortCls
endpoints.
Restrict access to SYSTEM and UMDF hosts, track adapter and binding
generations, and keep broker failure optional. Reserve data-plane
capabilities without advertising them until PCM queues are available.
Add a WaveRT adapter with render and capture endpoints backed by a
local ring buffer and shared presentation clock.
Advertise PCM formats through 192 kHz, eight channels, and packed
24-bit samples. Register LGAudio in the IDD solution and package it as
Looking Glass Audio.
After many months of hard work from our team, I am pleased to announce
Beta 8 Release Candidate 1.
B8 is a major update that introduces the Looking Glass Indirect Display
Driver, direct input and clipboard transport, a new USB audio path,
end-to-end HDR support, and extensive latency and reliability
improvements.
As this is a release candidate, please report any regressions or other
issues encountered during testing.
If you like this project, find it useful, and would like to help support
its continued development, you can do so using the following platforms:
* [GitHub][github]
* [Ko-Fi][kofi]
* [Patreon][patreon]
* [PayPal][paypal]
* BTC: `14ZFcYjsKPiVreHqcaekvHGL846u3ZuT13`
* ETH: `0x6f8aEe454384122bF9ed28f025FBCe2Bce98db85`
* XMR: `47xM4zG7b2tEj4mnSywHve4ydZzn3wzhf22snDRB7aSEcXrgUBpoT2Z4phTnyFMi1sMyQtHbdufMYRQ2PzMn3PGUJAE1dpc`
[github]: https://github.com/sponsors/gnif
[kofi]: https://ko-fi.com/lookingglass
[patreon]: https://www.patreon.com/gnif
[paypal]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick& hosted_button_id=ESQ72XUPGKXRY
B8 introduces protocol changes that are not compatible with B7. The
Looking Glass client, IDD, and OBS plugin must use matching versions.
The legacy Host Application remains available as a B7 workflow. Users
who require it should retain the complete B7 client, Host Application,
and OBS stack rather than mixing B7 and B8 components.
B8 requires Windows 10 version 1903 or newer. HDR and wide-color support
normally require compatible Windows 11 IddCx interfaces. Windows 10
continues to use the SDR-compatible path.
The Looking Glass Indirect Display Driver is now the recommended Windows
server. It creates its own virtual monitor, eliminating the need for a
physical display or dummy plug.
The IDD uses Direct3D 12 for accelerated capture and processing when a
suitable GPU is available. An SDR software fallback supports systems
without a usable render GPU.
A new installer includes the display driver, direct-input driver, tray
helper, and optional IVSHMEM driver installation. It can also disable
the legacy Host Application during migration.
The configuration interface supports custom resolutions, fractional
refresh rates up to 1000 Hz, preferred and default modes, dynamic guest
resolution, configuration reload and rollback, processing status, and
workarounds for problematic GPU drivers.
Keyboard and mouse input can now travel directly over LGMP using the
Looking Glass virtual HID device. This supports absolute desktop input,
relative captured input, media keys, up to 32 mouse buttons, and
keyboard lock-state synchronization.
Clipboard synchronization also runs directly over LGMP and supports
bidirectional text, images, and file transfers on both X11 and Wayland.
Transfers are streamed and pipelined to keep clipboard control
responsive while large files are being copied.
SPICE remains available as a fallback, but is no longer required for
primary IDD input or clipboard operation.
Looking Glass can now present an emulated USB Audio Class 2 device to
Windows through a SPICE USB-redirection channel.
It supports stereo, quadraphonic, 5.1, and 7.1 playback using 24-bit PCM
at up to 192 kHz, along with microphone recording and asynchronous clock
feedback. Classic SPICE audio remains available as a compatibility
fallback.
Audio buffering, synchronization, underrun recovery, and microphone
privacy handling have also been substantially improved.
B8 adds end-to-end HDR and wide-color support. The IDD transports HDR
metadata and the Windows display color transform, while the EGL renderer
can either present native HDR or tone-map it for an SDR display.
Native Linux HDR requires Wayland, an HDR-capable output, and compositor
support for `color-management-v1`. The OBS plugin can also capture the
HDR stream directly.
The IDD, client, and OBS plugin now coordinate frame delivery around
presentation deadlines. Superseded frames can be discarded before
transport, static regions avoid unnecessary copies, and different
consumers can operate at independent cadences.
Expanded timing graphs expose capture, GPU processing, shared-memory
transport, rendering, and presentation latency.
* Added the Looking Glass IDD as the recommended Windows server.
* Added a virtual monitor that does not require a dummy plug.
* Added accelerated Direct3D 12 capture and processing.
* Added an SDR software fallback for guests without a suitable GPU.
* Added a unified IDD, input driver, helper, and IVSHMEM installer.
* Added a tray configuration interface for display modes and status.
* Added custom resolutions and fractional refresh rates up to 1000 Hz.
* Added preferred modes, default refresh rates, and dynamic resolution.
* Added selectable direct-copy and indirect-copy GPU workarounds.
* Added filtering and sizing guidance for modes too large for IVSHMEM.
* Added direct keyboard and mouse input over LGMP.
* Added absolute and captured-relative mouse input modes.
* Added media-key, extended mouse-button, and keyboard LED support.
* Improved automatic keyboard capture and X11/Wayland input parity.
* Completed evdev hotplug, capture, mouse, and LED handling.
* Added direct bidirectional clipboard synchronization over LGMP.
* Added clipboard support for text, images, and files.
* Added seamless clipboard file handling for X11 and Wayland.
* Improved Caja, MATE, and Nautilus clipboard interoperability.
* Added streamed and pipelined clipboard transfers.
* Added the emulated Looking Glass USB Audio Class 2 device.
* Added multichannel 24-bit playback at up to 192 kHz.
* Added USB microphone recording and asynchronous clock feedback.
* Improved audio synchronization, jitter handling, and underrun
recovery.
* Added HDR metadata and Windows display color-transform transport.
* Added native Wayland HDR using `color-management-v1`.
* Improved HDR-to-SDR tone mapping and SDR white-level handling.
* Added HDR support to the OBS plugin.
* Added presentation-aware frame scheduling across IDD, client, and OBS.
* Added damage-aware GPU copies and software texture uploads.
* Added independent scheduling for multiple frame consumers.
* Added expanded capture, transport, rendering, and presentation graphs.
* Added automatic SPICE fallback and session recovery.
* Added forced display recovery using the configured escape key plus
`Shift+R`—`Scroll Lock+Shift+R` by default.
* Added mpv-compatible custom GLSL shader loading.
* Improved Wayland fractional scaling, pointer confinement, and warping.
* Improved DMA-BUF ownership, import performance, and damage handling.
* Added layout-independent hotkeys with translated key labels.
* Added non-Latin text support to the client overlay.
* Hardened shared-memory frame, cursor, queue, and clipboard validation.
* Retained aliases for settings moved from `app:*` to `lgmp:*`.
* Made RGB24 packing opt-in due to regressions on some integrated GPUs.
* Reworked the documentation around the current IDD workflow.
* Set Windows 10 version 1903 as the minimum supported guest.