Skip to content

feat(egfx): add send_uncompressed_frame for V8 clients#1182

Open
Greg Lamberson (glamberson) wants to merge 2 commits intoDevolutions:masterfrom
lamco-admin:feat/egfx-send-uncompressed-frame
Open

feat(egfx): add send_uncompressed_frame for V8 clients#1182
Greg Lamberson (glamberson) wants to merge 2 commits intoDevolutions:masterfrom
lamco-admin:feat/egfx-send-uncompressed-frame

Conversation

@glamberson
Copy link
Contributor

Add send_uncompressed_frame() to GraphicsPipelineServer for sending raw pixel data through WireToSurface1 with Codec1Type::Uncompressed.

V8 clients support the EGFX graphics pipeline but not H.264 (AVC420/AVC444). Currently there's no server API to send EGFX frames to these clients. Without this, servers must fall back to legacy FastPath bitmap delivery, losing EGFX benefits: surface management, frame acknowledgment, QoE metrics, and ZGFX compression.

Follows the same pattern as send_avc420_frame and send_avc444_frame: readiness check, backpressure check, surface lookup, then the StartFrame + WireToSurface1 + EndFrame sequence.

Changes:

  • 1 file: crates/ironrdp-egfx/src/server.rs
  • 1 new public method: send_uncompressed_frame()
  • 51 lines added

All xtask checks pass (fmt, lints, tests).

Add a method to GraphicsPipelineServer that sends raw pixel data
through WireToSurface1 with Codec1Type::Uncompressed. This enables
EGFX frame delivery to V8 clients that support the graphics pipeline
but not H.264 (AVC420/AVC444).

Follows the same pattern as send_avc420_frame and send_avc444_frame:
readiness check, backpressure check, surface lookup, StartFrame +
WireToSurface1 + EndFrame sequence.

Without this method, servers have no API to send EGFX frames to V8
clients and must fall back to legacy FastPath bitmap delivery, losing
EGFX benefits (surface management, frame acknowledgment, QoE metrics).
Add a CredentialValidator trait that allows servers to validate
client credentials during connection setup. Called after the
acceptor phase extracts credentials from ClientInfoPdu.

This enables PAM, LDAP, and other validate-on-receipt auth flows
for TLS-mode connections. Not used for CredSSP/Hybrid connections
which handle authentication through NTLM challenge-response.

- Add CredentialValidator trait with validate() method
- Add set_credential_validator() to RdpServer
- Validate credentials in client_accepted() before session start
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