Skip to content

feat(graphics): decode RFX Progressive tiles - #1673

Open
Marc-André Moreau (mamoreau-devolutions) wants to merge 2 commits into
masterfrom
copilot/progressive-tile-decoding
Open

feat(graphics): decode RFX Progressive tiles#1673
Marc-André Moreau (mamoreau-devolutions) wants to merge 2 commits into
masterfrom
copilot/progressive-tile-decoding

Conversation

@mamoreau-devolutions

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI balanced review requested due to automatic review settings August 14, 2026 20:40
@github-actions github-actions Bot added breaking-change Includes a breaking change, and requires special scrutiny at the boundaries kind/protocol Affects RDP or related protocol behavior maintainer-required Maintainer review or intervention is required risk/high Substantial core public API impact, or fail-closed triage; needs maintainer-level scrutiny scope/core Touches the core architectural tier size/S Size: up to 199 counted lines and 5 files; exceeds XS in either measure labels Aug 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Scopes Progressive RemoteFX decoder state by surface and codec context.

Changes:

  • Keys contexts by (surface_id, codec_context_id).
  • Adds surface-aware cleanup APIs.
  • Adds context isolation tests and shared fixtures.

Comment thread crates/ironrdp-graphics/src/progressive.rs
@github-actions github-actions Bot added ai-reviewed/1 One automated review completed and removed maintainer-required Maintainer review or intervention is required labels Aug 14, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small, self-contained fix to crates/ironrdp-graphics/src/progressive.rs: ProgressiveDecoder's context map is rekeyed from codec_context_id alone to (surface_id, codec_context_id), decode_bitmap/delete_context gain a surface_id parameter, and a new delete_surface method purges all contexts for a surface. All call sites and tests within the file are updated consistently and a new scoping test is added. ProgressiveDecoder has no caller anywhere in the tree (not wired into ironrdp-egfx), so this is an internal correction to not-yet-integrated code; no protocol-facing or public consumer behavior changes result.

Protocol analysis: partially_accepted — Core assessment is correct: MS-RDPEGFX 2.2.2.2/2.2.2.3 field widths (surfaceId u16, codecContextId u32) match the new params, and 3.3.1.1 supports associating codec contexts with a surface, so composite-keying is defensible hardening even though no cited section mandates it. I accept that. I partially reject one framing: the handoff singles out delete_surface's lack of a caller as 'incomplete_evidence,' but the entire ProgressiveDecoder type -- decode_bitmap and delete_context too, not just delete_surface -- has zero callers outside its own tests (verified via repo-wide grep); egfx's DeleteEncodingContext handler only invokes an app callback, never touches ProgressiveDecoder. That's pre-existing state, not a defect specific to the new method.

  1. question / low — crates/ironrdp-graphics/src/progressive.rs
    delete_surface has no caller anywhere in the tree yet (ProgressiveDecoder as a whole is not wired into ironrdp-egfx's compositor/client). Given the file's stated purpose is EGFX WireToSurface2 processing, is the wiring (decode_bitmap on WireToSurface2, delete_context on DeleteEncodingContext, delete_surface on DeleteSurface) planned as an immediate follow-up, or is this decoder still in a standalone/staging state pending broader integration?

Comment thread crates/ironrdp-graphics/src/progressive.rs
@github-actions github-actions Bot added the maintainer-required Maintainer review or intervention is required label Aug 14, 2026
@github-actions github-actions Bot added ai-reviewed/2 Final automated review completed and removed ai-reviewed/1 One automated review completed labels Aug 14, 2026
@github-actions github-actions Bot added risk/unknown Risk could not be determined automatically; needs maintainer-level scrutiny and removed risk/high Substantial core public API impact, or fail-closed triage; needs maintainer-level scrutiny labels Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-reviewed/2 Final automated review completed breaking-change Includes a breaking change, and requires special scrutiny at the boundaries kind/protocol Affects RDP or related protocol behavior maintainer-required Maintainer review or intervention is required risk/unknown Risk could not be determined automatically; needs maintainer-level scrutiny scope/core Touches the core architectural tier size/S Size: up to 199 counted lines and 5 files; exceeds XS in either measure

Development

Successfully merging this pull request may close these issues.

2 participants