-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
On 3/5/26 23:39, CHIKI Badreddine wrote:
> Hi Qubes developers,
Hello!
> I'm interested in applying for GSoC 2026 with Qubes OS, specifically for
> the "GUI agent for Windows 8/10" project.
>
> I'm a systems programming student at 1337 (42 Network) with C/C++
> experience and interest in low-level graphics driver development. The
> WDDM display driver work aligns with my focus on graphics systems and
> hardware interfacing.
>
> Questions about the project:
>
> 1. What's the current state of the WDDM driver implementation? What
> specific blockers remain?
Currently we have no usable WDDM code. I was researching the subject
several years ago but wasn't able to proceed then due to poor
documentation at the time and the complexity of the WDDM API. The
documentation state definitely improved since then, and there is some
other prior work to look at.
> 2. Is the preference to pursue the display-only WDDM approach or
> continue work on the full WDDM driver?
Display-only driver should be enough for the case of an emulated GPU
(which we use now). It would let us manage the render buffer and get
display surface damage areas directly without using the DirectX Desktop
Duplication APIs.
> 3. What would be a good starting point to familiarize myself with the
> existing codebase before GSoC starts?
The main repo for the GUI agent is here:
https://github.com/QubesOS/qubes-gui-agent-windows
I'll mention other potential avenues for improving the GUI agent:
1. Improve the performance of the current display capture solution by
using a ring buffer for frame data so the capture thread doesn't play
event ping-pong with the main thread.
2. Improve/rewrite the window tracking logic. Display capture is only
one part of the equation, we're also tracking all changes to visible
windows (display driver knows nothing about that). Currently this is
done via polling, which is really inefficient. IIRC the reason for that
was because notifications via windows hooks were unreliable: they need
DLL injection under the hood which is rather problematic (32bit vs 64bit
processes, different security contexts for things like the login
screen/winlogon etc).
3. Add a visual capture debug "log" capable of saving window snapshots
along with their metadata. Something like that would be really useful
for debugging the window tracking logic.
- --
Best regards,
Rafał Wojdyła
Invisible Things Lab
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEVwOm02mHaIsSbeWChaL2sHYatbsFAmm6mJIACgkQhaL2sHYa
tbv+UQf9Hm6t+EOmgRxXwQfOKwprv2UtZkqP/yQ4QGoV79GX23xBZ41yNHpBNFKd
3qMXUvhETd3Ly8acOZMkBYNewDwxxWhz6EFObqX2yeqvd+IBp7sDEADs/IXn8KLs
Jlq/c8sl24YX9XZt5BHq1oMR97910pihAYGKlu4FvYqI4ijxuHLzZO691u7VbN14
nugVP6p118HxPgCv9Tz2lHTEQoVKkfxm8t13m6FcBdO4WY5H3SuGneBq5E/FJbM7
qR4a0XqJsOA1fstj6MU3pttAB4AKjmRQiMM3yJMGOWvTqenOK0g1WsOCw3Kgenyp
Im0/JczhW0xvArx9DrRXKyRmOwNVkg==
=BdLJ
-----END PGP SIGNATURE-----