Skip to content

feat(connector): expose SUPPORT_DYN_VC_GFX_PROTOCOL early-cap flag for EGFX clients#1237

Open
GlassOnTin wants to merge 1 commit intoDevolutions:masterfrom
GlassOnTin:feat/egfx-early-cap-flag
Open

feat(connector): expose SUPPORT_DYN_VC_GFX_PROTOCOL early-cap flag for EGFX clients#1237
GlassOnTin wants to merge 1 commit intoDevolutions:masterfrom
GlassOnTin:feat/egfx-early-cap-flag

Conversation

@GlassOnTin
Copy link
Copy Markdown
Contributor

Currently, early_capability_flags in the GCC core data is built from a fixed set in connection.rs. Clients that want to use the Graphics Pipeline Extension (MS-RDPEGFX) — by attaching a DvcClientProcessor for Microsoft::Windows::RDS::Graphics — have no way to set SUPPORT_DYN_VC_GFX_PROTOCOL without forking the connector, and modern Windows servers won't open the EGFX channel unless the client advertises support.

This PR adds an opt-in Config.support_dyn_vc_gfx_protocol: bool (default false). When set, the flag is OR'd into early_capability_flags alongside the existing WANT_32_BPP_SESSION conditional. Existing consumers are unaffected; the doc comment includes a safety note that setting this without an EGFX implementation will cause Windows to stop sending legacy bitmap updates, leaving the desktop blank.

Used downstream by Haven (an Android RDP/VNC client) which implements EGFX with ClearCodec + RemoteFxProgressive decoders; this lets us drop a vendored fork of ironrdp-connector we currently carry just for this one flag.

Default false to preserve current behaviour. cargo check --workspace clean — six other in-tree Config { … } builders updated with the default-false field.

…r EGFX clients

Currently, `early_capability_flags` in the GCC core data is built
from a fixed set in `connection.rs`. Clients that want to use the
Graphics Pipeline Extension (MS-RDPEGFX) — by attaching a
DvcClientProcessor for `Microsoft::Windows::RDS::Graphics` — have
no way to set `SUPPORT_DYN_VC_GFX_PROTOCOL` without forking the
connector, and modern Windows servers won't open the EGFX channel
unless the client advertises support.

This commit adds an opt-in `Config.support_dyn_vc_gfx_protocol: bool`
(default `false`). When set, the flag is OR'd into
`early_capability_flags` alongside the existing
`WANT_32_BPP_SESSION` conditional. Existing consumers are
unaffected; the doc comment includes a safety note that setting
this without an EGFX implementation will cause Windows to stop
sending legacy bitmap updates, leaving the desktop blank.

Used downstream by Haven (an Android RDP/VNC client) which
implements EGFX with ClearCodec + RemoteFxProgressive decoders;
this lets us drop the vendored ironrdp-connector fork.

Default `false` to preserve current behaviour.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant