-
Notifications
You must be signed in to change notification settings - Fork 186
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
Cursor may become invisible when recording some fullscreen games using WGC #128
Comments
Hmmm, interesting. It likely has something to do with the software cursor, as that is forced on with WGC. The good news is that in an upcoming release we've finally removed the transition to the software cursor while capturing. But I'll see what I can find for existing builds. |
Thanks very much! I'll read up on software vs hardware cursor differences and see if that can give me any leads on finding anything in common between people who can reproduce the issue. Even if the issue can't be worked around on existing builds (as I imagine may be quite likely), finding a differentiator would be very beneficial, since it gives us more fine-grained options than the bludgeon of "fullscreen game + hidden cursor = fall back to DXGI/BitBlt." I'll also try to narrow down whether OpenGL actually is a common factor here or if that's just coincidence based on the games that have been reported. |
Of course! And thanks for digging up more information. If you want to force the software cursor without WGC, you can turn on cursor trails. I think there's also a magnifier API to do so, but I can't remember off the top of my head.
|
Yeah, we've definitely seen it on Win11 22621 and 22631; I'll dig through some of the other user reports and see if I can find any other cases (e.g. I imagine a yes/no for Win10 would be useful! Might struggle for that though as we disable WGC by default on 10 since our users mostly aren't fans of the yellow border) |
Quick update for you @robmikh : we haven't managed to get any definite confirmations for Win10 or other Win11 builds, but we've made the following observations:
All of my testing above was tested on a mix of Win11 22631.3447 and 22631.3527 |
Thanks for the extra info, this will definitely help! |
One more quick update: we're getting some scattered reports of this issue with League of Legends too, which AFAIK is a D3D game, not OpenGL... so the GL specificity may be coincidence rather than an actual symptom. |
Clarification on the above: it looks like there are two separate situations that can cause this, only one of which I'd say is actually a bug.
|
Hi @robmikh, just an update on this with 24H2 info.
Did the change to support HW cursor while recording with WGC make it into 24H2 in the end, or did it get shelved? I mainly ask because this issue has become rather more urgent for us, as it seems that DXGI output duplication also no longer works properly on 24H2 with GL fullscreen apps in some cases (from our limited testing it's always multi-monitor setups with issues, so potentially when MPO is not enabled for all connected monitors based on this post?). Historically DXGI capture has been our reliable fallback when WGC was unsuitable for some reason, so now we're left with BitBlt-based capture as our only viable option for GL games on 24H2, which is a fairly dire state of affairs. If you'd be open to discussing this issue and/or the DXGI duplication one, I'm edit: after some further discussion in the DX12 Discord, it looks like the GL issue was also some form of exclusive fullscreen mode being activated resulting in the DWM not having a chance to draw the software cursor. Changing the NVIDIA drivers to send GL/Vulkan rendering through a DXGI swapchain fixes this issue (and works around the DXGI duplication issue) since now the DXGI fullscreen optimizations take effect and the DWM can draw the cursor. I'd still be interested to know how the HW cursor work landed (or didn't) in 24H2 though 😄 |
Sorry for the delay! I need to look at this more closely, sorry you've waited so long. To answer your question about the new cursor support in 24H2, we found some bugs last minute and had to turn the feature off. We've been chipping away at those and hope to turn it back on sometime next year. This is a feature I've personally been pushing for for awhile! |
@robmikh Thanks very much for the update! That's useful info and helps us enumerate our options. It seems like even the GL case isn't really a bug in WGC, strictly speaking, because contrary to what I thought it is going into some sort of "true" fullscreen mode and so the DWM doesn't get a chance to draw the software cursor. So, the hardware cursor change should probably fix all cases I know of when it's ready. Apologies for the confusion over that. Not sure what to do about fullscreen GL apps in 24H2 for now though; before we could just consistently fall back to DXGI DD capture for GL apps, but now with DD not working in multi-monitor scenarios unless GL present is layered on top of a DXGI swapchain (which can cause compatibility issues with some games) I don't think we really have any good options. I guess we'll investigate enabling hook-based capture for GL apps and try to measure the performance impact of BitBlt desktop window capture in case hooking isn't reliable. (e: scratch that, BitBlt'ing the desktop window DC doesn't work either for real fullscreen GL of course 😂) |
There seems to be a software-dependent issue with WGC window capture where the user's cursor may disappear when recording certain fullscreen games.
For clarity: this isn't the cursor appearing or not appearing in the recording, this is the actual system cursor becoming invisible within a fullscreen window while WGC is recording it. The same issue does not appear using other recording methods (e.g. DXGI desktop duplication, BitBlt), and enabling/disabling the WGC option to show the cursor in recordings does not seem to change the behaviour.
We've been getting user reports about this for a while (and mercifully one of our QA team can reproduce it), and the OBS project has had reports about the same on their forums for a few years including examples of both window and screen capture suffering from this issue. However, this obviously isn't an across-the-board problem, and myself and several of my colleagues can't reproduce it at all.
So far we've had reports for Minecraft Java Edition and Geometry Dash, which I believe both use OpenGL. We've also had reports on both NVIDIA and AMD GPUs (although we've only seen AMD via user reports so slight grain of salt).
I've built the WPF ScreenCapture sample and sent it to my colleague, and he was able to reproduce the issue. He's on Windows 11 Home 22H2 (22621.3007) with an NVIDIA GPU, but we also have user reports from other Windows 11 versions on builds 22621 and 22631.
Repro steps:
I'm not sure if this is a known issue, but it'd be really great to have one of:
I can ask my colleague for more information or to test other scenarios if it'll help. Thanks!
The text was updated successfully, but these errors were encountered: