Skip to content

test(graphics): add progressive RFX round-trip tests and documentation#1199

Open
Greg Lamberson (glamberson) wants to merge 4 commits intoDevolutions:masterfrom
lamco-admin:feat/progressive-rfx-tests
Open

test(graphics): add progressive RFX round-trip tests and documentation#1199
Greg Lamberson (glamberson) wants to merge 4 commits intoDevolutions:masterfrom
lamco-admin:feat/progressive-rfx-tests

Conversation

@glamberson
Copy link
Copy Markdown
Contributor

Depends on #1198.
Part of the multi-codec EGFX implementation described in #1158 (Section 4).

Summary

Add encode/decode round-trip tests verifying pixel-perfect reconstruction through the full progressive pipeline (forward DWT, SRL quantize, SRL dequantize, inverse DWT). Expand module documentation with codec overview and usage examples.

Changes

1 file, 246 lines.

Test plan

  • All 5 xtask gates pass
  • Round-trip tests verify encode then decode produces identical coefficients

@glamberson Greg Lamberson (glamberson) force-pushed the feat/progressive-rfx-tests branch 3 times, most recently from 761ca8f to 36c16eb Compare April 1, 2026 20:54
Add progressive RemoteFX decode pipeline and wire it into the EGFX
client and server:

ironrdp-graphics: Progressive decode algorithms (first-pass and
upgrade-pass coefficient reconstruction via SRL + inverse DWT),
tile state tracking for multi-pass refinement, surface-level tile
management with automatic quality progression.

ironrdp-egfx: WireToSurface2 dispatch for progressive codec in
GraphicsPipelineClient. Progressive surface state stored on the
server for multi-pass frame scheduling.
@glamberson Greg Lamberson (glamberson) force-pushed the feat/progressive-rfx-tests branch 2 times, most recently from 46f13e6 to 1cab217 Compare April 6, 2026 05:01
The merged progressive primitives PR (Devolutions#1196) added validation that
a ProgressiveRegion must contain at least one rectangle. The test
used an empty rects vec which now fails decoding.
…c frames

Add server-side progressive encode pipeline and multi-codec frame
support:

ironrdp-graphics: Progressive RFX encoder producing first-pass and
upgrade-pass tile data via forward DWT + SRL quantization. Quality
level control for adaptive bandwidth usage.

ironrdp-egfx: send_remotefx_progressive_frame() for WireToSurface2
progressive transmission. MixedTilePayload enum and send_mixed_frame()
for combining ClearCodec + Progressive RFX tiles in a single
StartFrame/EndFrame pair.
Add encode/decode round-trip tests verifying pixel-perfect reconstruction
through the full progressive pipeline (forward DWT, SRL quantize, SRL
dequantize, inverse DWT). Expand module documentation with codec overview
and usage examples.
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.

2 participants