refactor(pdu)!: remove ironrdp-egfx duplicates from ironrdp-pdu#1303
Open
Greg Lamberson (glamberson) wants to merge 1 commit into
Open
refactor(pdu)!: remove ironrdp-egfx duplicates from ironrdp-pdu#1303Greg Lamberson (glamberson) wants to merge 1 commit into
Greg Lamberson (glamberson) wants to merge 1 commit into
Conversation
PR Devolutions#1057 introduced the `ironrdp-egfx` crate as the canonical home for EGFX PDU types but left the original definitions in `crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/` in place. The two have coexisted as duplicate definitions for 14 weeks; the egfx-side has evolved (`#[non_exhaustive]` markers via Devolutions#1284, exclusive-bounds rectangles via Devolutions#1238 and Devolutions#1246, ClearCodec encode helpers including `Avc420Region` and `encode_avc420_bitmap_stream`, the unified `GfxPdu` enum, new PDU types `CacheImportOfferPdu`/`CacheEntryMetadata`/`MapSurfaceToWindowPdu`/ `QoeFrameAcknowledgePdu`), while the pdu-side has been frozen at the Devolutions#1057 snapshot receiving only mechanical updates (clippy, edition, `arbitrary` feature via Devolutions#1272). No file in the workspace imports the pdu-side gfx path except `ironrdp-testsuite-core`, which is migrated here from `ironrdp_pdu::rdp::vc::dvc::gfx::*` to `ironrdp_egfx::pdu::*`. The `ServerPdu`/`ClientPdu` split-wrapper pattern collapses to the egfx-side's unified `GfxPdu`. Four `InclusiveRectangle` field sites in `graphics_messages.rs` (`WireToSurface1Pdu::destination_rectangle`, `SolidFillPdu::rectangles`, `SurfaceToSurfacePdu::source_rectangle`, `SurfaceToCachePdu::source_rectangle`) are updated to `ExclusiveRectangle` per the post-Devolutions#1238/Devolutions#1246 workspace standard; `Avc420BitmapStream::rectangles` retains `InclusiveRectangle` per the egfx-side type definition. The `crates/ironrdp-pdu/src/rdp/vc/dvc/` subtree contained only the gfx module, so the entire subtree is removed along with the `pub mod dvc;` declaration in `vc/mod.rs` and the `pub use crate::rdp::vc::dvc;` re-export in `lib.rs`. BREAKING CHANGE: The `ironrdp_pdu::rdp::vc::dvc::gfx::*` symbols and the `ironrdp_pdu::dvc` top-level re-export are removed. Consumers should use `ironrdp_egfx::pdu::*` instead. The egfx-side has API parity for every leaf type and replaces the `ServerPdu` + `ClientPdu` split with a unified `GfxPdu` enum. Test plan: `cargo xtask check fmt`, `lints`, `tests`, `typos`, `locks` all green on the change set.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ironrdp-pdu::rdp::vc::dvc::gfxmodule subtree, which has been a duplicate ofironrdp-egfx::pdusince feat(egfx): add MS-RDPEGFX Graphics Pipeline Extension #1057 (2026-02-12). The egfx-side has been the canonical home and evolved through feat(egfx)!: switch WireToSurface1Pdu rectangles to exclusive bounds #1238 / feat(egfx)!: switch SolidFill/SurfaceToSurface/SurfaceToCache rectangles to exclusive bounds #1246 (exclusive-bounds rectangles), feat(pdu): add arbitrary feature for structure-aware fuzzing #1272 (arbitraryfeature), refactor(egfx)!: mark consumer-facing types as#[non_exhaustive]for pre-publish API stability #1284 (#[non_exhaustive]on consumer-facing types), and gained new types (GfxPdu,CacheImportOfferPdu,CacheEntryMetadata,MapSurfaceToWindowPdu,QoeFrameAcknowledgePdu,Avc420Region,encode_avc420_bitmap_stream) plus encode helpers; the pdu-side stayed frozen at the feat(egfx): add MS-RDPEGFX Graphics Pipeline Extension #1057 snapshot.ironrdp-testsuite-core; migrated here fromironrdp_pdu::rdp::vc::dvc::gfx::*toironrdp_egfx::pdu::*. TheServerPdu/ClientPdusplit-wrapper collapses to the egfx-side's unifiedGfxPdu.InclusiveRectanglefield sites in the test fixtures (WireToSurface1Pdu::destination_rectangle,SolidFillPdu::rectangles,SurfaceToSurfacePdu::source_rectangle,SurfaceToCachePdu::source_rectangle) are updated toExclusiveRectangleper the post-feat(egfx)!: switch WireToSurface1Pdu rectangles to exclusive bounds #1238 / feat(egfx)!: switch SolidFill/SurfaceToSurface/SurfaceToCache rectangles to exclusive bounds #1246 workspace standard.Avc420BitmapStream::rectanglesretainsInclusiveRectangleper the egfx-side type definition.crates/ironrdp-pdu/src/rdp/vc/dvc/subtree contained only thegfxmodule, so the entire subtree is removed along with thepub mod dvc;invc/mod.rsand thepub use crate::rdp::vc::dvc;re-export inlib.rs.ironrdp-egfxmoves from[dev-dependencies]to[dependencies]inironrdp-testsuite-core/Cargo.tomlso the lib-level imports compile.BREAKING CHANGE
The
ironrdp_pdu::rdp::vc::dvc::gfx::*symbols and theironrdp_pdu::dvctop-level re-export are removed. Consumers should useironrdp_egfx::pdu::*instead. The egfx-side has API parity for every leaf type and replaces theServerPdu+ClientPdusplit with a unifiedGfxPduenum.Validation
cargo xtask check fmt/lints/tests/typos/locksall pass.Net diff: 11 files, +13 / -2174.