-
Notifications
You must be signed in to change notification settings - Fork 170
Windows Graphics Capture in Service #1038
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
base: master
Are you sure you want to change the base?
Conversation
|
This still needs some minor editing to remove pointless changes, so leaving it in draft for now but will clean up some of the rough edges in a bit |
|
Great to see this PR moving over to Apollo! I was worried all of your work would end up stranded in yet another Sunshine fork. It seemed to work well when I tested the Sunshine PR. Hope you're able to work with ClassicOldSong on getting it integrated here. |
Actually, my plan is to start a new fork... but my plan is to support both Apollo and Sunshine. Backported features like WGC will be sent directly to Apollo if she chooses to accept them. |
|
Well the fact that you're sharing this with Apollo alleviates the concern of further fracturing the features across forks. I didn't mean to diss your fork. 😅 I've been testing the PR since yesterday, and it's been stable for me. The WGC Constant option works great for remote desktop use, and WGC Variable is working as a drop-in replacement for DDX (but I haven't tested it a ton). It'd be amazing if there was a way to switch WGC modes per profile. Fingers crossed ClassicOldSong accepts the PR. 🤞 BTW, I think the |
|
I will merge but I need to review and make sure it won't conflict with other parts of Apollo. Me and @Nonary actually discussed this further and have more wild thoughts, but I'll make sure this pr gets merged as a stepping stone for our further explorations. |
|
I don't mind back-porting the features its just quite a lot, I am already diverged off with 30,000 changes. I have done so far:
Planning to also integrate RTSS frame limiting as well, but have not started on that yet. Basically I have a lot of ideas that I will be working on and needed my own fork for now because it will take many weeks or even months to get those all reviewed and polished up for back-porting. I just figured the more high value ones like WGC get back-ported first since mostly everyone would benefit from that where as Playnite for example is more niche. |
Actually with Apollo stucking in a virtual display will never happen. SudoVDA only activates on request and requires a constant ping to keep alive, so even if Apollo crashes the virtual display won't lock users out. I don't recommend using third party apps to manage display arrangements, since they'll always conflict with Windows's native implemtation. The way Apollo creates and removes a display just takes advantage of Windows's native behavior, so it's always safe to use. |
There is something weird though starting since 24H2 where if for example the main monitor is a TV set and it goes to a deep sleep, the profile restores just doesn't work properly. A lot of external display swap tools also broke mysteriously in 24H2 and still kind of investigating why right now.
I won't be using a third party app, I will be using the Windows API directly to fix the display swap code basically. |
Apollo actually don't need profile swapping. It removes the virtual display upon stream termination, and Windows restores to its own saved state. So there's totally no need for Apollo to manage a separate state. |
FYI, I asked Unwinder about getting LimitDenominator supported using the official SDK, and it'll be added in the next RTSS beta: https://forums.guru3d.com/threads/limitdenominator-support-in-rtsshooks-dll.457441/#post-6355395 So if you want to use that instead of your Powershell scripts, you can. (Sorry for the off-topic discussion!) |
hello, can I try this? newbie here, i don't know how to download and install PRs. |
This allows Apollo to be able to capture the screen using Windows.Graphics.Capture API even while it is running as System.
WGC has roughly the same performance as DXGI and does NOT freeze when VRAM is exceeded even with HAGS enabled.