Commit Graph

4433 Commits

Author SHA1 Message Date
Geoffrey McRae
1a4b6049bd [client] windows: implement native clipboard support
Add Win32 clipboard ownership, notifications, and data exchange for
text and image formats. Marshal clipboard access onto the window thread
and reject stale transfers when ownership changes.

Keep file clipboard offers unsupported while clearing stale content from
earlier remote offers.
2026-11-06 14:40:26 +11:00
Geoffrey McRae
7f63dc986e [client] network: fix ANGLE decoder synchronization
The dequant shader returned before workgroup barriers for missing
blocks. Mask those blocks to zero so ANGLE's D3D compiler accepts the
shader while every invocation reaches each barrier.

The vcpkg ANGLE build also omitted upstream shared-context locking.
Enable both locking definitions so decode dispatches cannot race the
render thread through ANGLE's shared D3D11 state manager.
2026-11-06 14:40:26 +11:00
Geoffrey McRae
f6c32c2c1e [client] network: request ES 3.1 decoder context 2026-11-06 14:40:26 +11:00
Geoffrey McRae
c2aa8de32b [client] windows: bind inherited output streams 2026-11-06 14:40:25 +11:00
Geoffrey McRae
a8365716af [client] windows: prevent duplicate application manifest 2026-11-06 14:40:25 +11:00
Geoffrey McRae
8c4793ed8c [client] wasapi: define Core Audio interface GUIDs 2026-11-06 14:40:25 +11:00
Geoffrey McRae
d13c40e09d [client] windows: enable CRT math constants 2026-11-06 14:40:25 +11:00
Geoffrey McRae
8bba06dbf0 [client] windows: rebuild clean MsQuic archives 2026-11-06 14:40:25 +11:00
Geoffrey McRae
2021874ca9 [common/client] windows: avoid deprecated CRT calls 2026-11-06 14:40:25 +11:00
Geoffrey McRae
08b68ff740 [client] egl: avoid deprecated preset string copy 2026-11-06 14:40:25 +11:00
Geoffrey McRae
f9fa437c20 [client] egl: use compiler stack allocation builtin 2026-11-06 14:40:25 +11:00
Geoffrey McRae
1ff31304cd [client] windows: compile DirectWrite font support as C++ 2026-11-06 14:40:25 +11:00
Geoffrey McRae
faa078f069 [client] windows: disable MsQuic code analysis 2026-11-06 14:40:25 +11:00
Geoffrey McRae
47f59cd4d0 [client] network: refresh nested MsQuic configuration 2026-11-06 14:40:25 +11:00
Geoffrey McRae
34adfddb8c [client] gui: suppress third-party warnings 2026-11-06 14:40:25 +11:00
Geoffrey McRae
e7d6834f87 [client] lgmp: support native Windows builds
Update LGMP for MSVC-compatible Clang and portable static assertions.
2026-11-06 14:40:25 +11:00
Geoffrey McRae
37f7bbad77 [common] cpuinfo: move feature queries to platform code 2026-11-06 14:40:25 +11:00
Geoffrey McRae
05fcc64c57 [common] option: use portable tokenizer 2026-11-06 14:40:25 +11:00
Geoffrey McRae
52462d29c9 [client] windows: document PowerShell policy override 2026-11-06 14:40:25 +11:00
Geoffrey McRae
78b6a31e7d [client/common] windows: fix native clang-cl build 2026-11-06 14:40:25 +11:00
Geoffrey McRae
ad0207afc5 [client] windows: use vcpkg OpenSSL for MsQuic 2026-11-06 14:40:25 +11:00
Geoffrey McRae
1995edc1e6 [client] windows: pin vcpkg baseline 2026-11-06 14:40:25 +11:00
Geoffrey McRae
57f18d7e80 [client] windows: add native clang-cl build
Build the Windows client against the MSVC ABI while retaining clang
language support. Use vcpkg for ANGLE and libsamplerate, and build
MsQuic with its bundled static OpenSSL.
2026-11-06 14:40:25 +11:00
Geoffrey McRae
c456596bd7 [client] network: report detailed transport failures
Report the exact MsQuic status and initialization stage when network
transport construction or connection fails.

Diagnose certificate, stream, protocol, and peer shutdown failures
instead of returning only the generic transport error.
2026-11-06 14:40:25 +11:00
Geoffrey McRae
aa064e3fa6 [client] tests: support native Windows builds
Use platform-appropriate temporary-file handling and function signatures
when compiling the standalone tests with MSVC-compatible Clang.
2026-11-06 14:40:25 +11:00
Geoffrey McRae
7530943446 [build] msquic: fix MinGW static OpenSSL linking
Build MsQuic's component archives instead of flattening Windows import
libraries into the monolithic archive. Use the static OpenSSL archives
supplied by the active MinGW toolchain while retaining Schannel for MSVC
and QuicTLS for Linux.

Let the active compiler locate its target root and use the restricted
ntdll import library. Provide GCC-compatible byte interlocked
operations, expose native XDP calls, and suppress expected compatibility
warnings.
2026-11-06 14:40:25 +11:00
Geoffrey McRae
8ca2edbcc6 [idd] network: retain and replay the latest frame
Keep one pending source frame before the first subscriber connects.
Replay completed encodes with fresh delivery timing and frame IDs.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
f44570f039 [client] network: restore clipboard after reconnect 2026-11-06 14:37:38 +11:00
Geoffrey McRae
cbb7835158 [idd] clipboard: arbitrate ownership by active client 2026-11-06 14:37:38 +11:00
Geoffrey McRae
450d20c8d8 [client/idd] network: tolerate transient wireless stalls 2026-11-06 14:37:38 +11:00
Geoffrey McRae
50177afe79 [idd] network: enforce configurable video bitrate 2026-11-06 14:37:38 +11:00
Geoffrey McRae
6aea2496f0 [idd] network: make video chroma configurable 2026-11-06 14:37:38 +11:00
Geoffrey McRae
967b43f4a8 [idd] network: preserve desktop chroma detail 2026-11-06 14:37:38 +11:00
Geoffrey McRae
ead2b8adf0 [client] network: crop aligned video planes 2026-11-06 14:37:38 +11:00
Geoffrey McRae
d345b5c31e [client] network: use bulk delivery for video 2026-11-06 14:37:38 +11:00
Geoffrey McRae
bdf5fed38d [client/idd] network: implement tiled video transport 2026-11-06 14:37:38 +11:00
Geoffrey McRae
e14d5dd3c9 [idd] audio: support concurrent transport sources
Keep a stable target per transport binding and fan playback and state
notifications out to every active source. Serialize capture and clock
authority while preserving exact BUSY retries and failure cleanup.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
b6e0bd55fc [idd] network: preserve video sessions during reconfigure
A video configuration epoch can advance while client feedback for the
previous epoch is still in flight. Treat structurally valid stale video
control packets as obsolete instead of terminating the QUIC session.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
da5af3d478 [idd] network: recover video after display reconfiguration
Reset reusable D3D12 command queues before rebuilding the encoder.

Treat a committed frame graph as recovery from transient device loss.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
2f981a9a60 [client] network: fix wavelet reconstruction
Decode each subblock from its proper bitplane offset.

Keep reconstructed wavelet levels in separate textures.

This lets inverse transforms safely write the next level.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
abc0ed0654 [idd] network: finish fragmented video frames
Preserve a partially transmitted frame while replacing queued stale
frames. Continuous capture can otherwise discard every frame before the
client receives its final fragment.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
3909a70950 [idd] capture: accept effective texture alignment
Ignore runtime-selected alignment when comparing frame textures.

This allows software-adapter products through publication and routing.

Log the first execution-stage failure per graph.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
0992f695ad [client/idd] network: publish guest information 2026-11-06 14:37:38 +11:00
Geoffrey McRae
b7f36f39a2 [idd] network: support software video capture 2026-11-06 14:37:38 +11:00
Geoffrey McRae
70bbf180be [idd] transport: publish frame routes after ready 2026-11-06 14:37:38 +11:00
Geoffrey McRae
437e19c13b [client] network: defer clipboard offers until claimed 2026-11-06 14:37:38 +11:00
Geoffrey McRae
3b8f051164 [idd] network: accept acknowledged client requests 2026-11-06 14:37:38 +11:00
Geoffrey McRae
5f2e1e116c [client/idd] network: report connection shutdown errors 2026-11-06 14:37:38 +11:00
Geoffrey McRae
746a8d460d [idd] network: default to dual-stack listener 2026-11-06 14:37:38 +11:00
Geoffrey McRae
f47022d592 [idd] network: publish readiness after session setup 2026-11-06 14:37:38 +11:00