Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Graphics Device Interface Acceleration Extensions (MS-RDPEGDI) #187

Merged
merged 12 commits into from Apr 9, 2020

Conversation

alxbl
Copy link
Collaborator

@alxbl alxbl commented Mar 3, 2020

This pull request adds support for the MS-RDPEGDI extension and drawing orders.

I'm opening it now despite being only roughly halfway done with the changes in order to give some visibility as to the overall changes so far.

What's done

  • Parsing for the message types defined in MS-RDPEGDI.
  • Pipeline to get those messages to the Player
  • API for GDI frontends

What's left to do

  • Support for Capability Propagation in the Drawing Order Parser
  • Support for GlyphV2 parsing in the Drawing Order Parser
  • Qt5 Frontend for drawing orders
  • Glyph Rendering
  • Blending/Composition Mode Interop between RDP/GDI and Qt
  • Cleanup pass
  • Documentation
  • Testing
  • [ ] Implement NINEGRID support and rendering (currently downgrading)

Closes #50
Fixes #162

@alxbl alxbl force-pushed the gdi-support branch 3 times, most recently from a9e1b67 to 7523aa4 Compare March 16, 2020 16:23
@alxbl
Copy link
Collaborator Author

alxbl commented Mar 16, 2020

The branch is now in a state where I feel comfortable getting a thorough code review.

I'm in the process of doing more exhaustive tests using Windows 7 and Windows Server 2012.

@alxbl alxbl changed the title WIP: MS-RDPEGDI support Add support for Graphics Device Interface Acceleration Extensions (MS-RDPEGDI) Mar 16, 2020
@alxbl alxbl added enhancement New feature or request pyrdp-replay labels Mar 16, 2020
@alxbl alxbl requested a review from obilodeau March 16, 2020 17:07
README.md Outdated Show resolved Hide resolved
Copy link
Collaborator

@Res260 Res260 left a comment

Choose a reason for hiding this comment

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

I looked quickly-ish, let some comment but I'll let @obilodeau approve!

@alxbl
Copy link
Collaborator Author

alxbl commented Mar 25, 2020

Rebased this on master since there have been a lot of changes.

@Res260 Res260 mentioned this pull request Mar 25, 2020
14 tasks
@obilodeau
Copy link
Member

@alxbl: new conflicts. sorry 😞

@alxbl
Copy link
Collaborator Author

alxbl commented Apr 2, 2020

Conflicts are resolved. I want this to land before mp4 conversion if possible.

Copy link
Member

@obilodeau obilodeau left a comment

Choose a reason for hiding this comment

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

This is very impressive work! It is hard to do a review that does it justice...

One thing that isn't clear to me: are we now coupling with Qt so much that this code won't work unless we have PySide2 / QT installed? I'm thinking about our docker-slim and potentially rasp pi MITM deployments.

Copyright years should be updated in all touched files, I did suggestions for many of them but I think I missed a few ones (including the files that aren't new since it was not in diff context). A git log --stat on this branch should help identify all files to verify.

🚀 👏 🍯

.flake8 Outdated Show resolved Hide resolved
CHANGELOG.adoc Show resolved Hide resolved
pyrdp/mitm/SlowPathMITM.py Outdated Show resolved Hide resolved
pyrdp/mitm/SlowPathMITM.py Outdated Show resolved Hide resolved
pyrdp/parser/rdp/fastpath.py Show resolved Hide resolved
pyrdp/player/gdi/draw.py Outdated Show resolved Hide resolved
pyrdp/player/gdi/draw.py Show resolved Hide resolved
pyrdp/player/gdi/draw.py Show resolved Hide resolved
pyrdp/player/gdi/draw.py Show resolved Hide resolved
pyrdp/player/gdi/raster.py Show resolved Hide resolved
@alxbl
Copy link
Collaborator Author

alxbl commented Apr 9, 2020

All the things have been flakified.

Copy link
Member

@obilodeau obilodeau left a comment

Choose a reason for hiding this comment

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

I really enjoy the gradual flakiness and attention to details! This is perfect 👌

@alxbl alxbl merged commit eb222b1 into master Apr 9, 2020
@alxbl alxbl deleted the gdi-support branch April 9, 2020 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request pyrdp-replay
Projects
None yet
3 participants