Exclusive fullscreen capability detection is incorrect on Intel iGPU
It has regressed and doesn't show that I'm running exclusive fullscreen on an Intel iGPU anymore.
Running git bisect on osu-framework points to 17 commits in PR https://github.com/ppy/osu-framework/pull/5483 as potential first bad commits.
Here's a description of the process I followed to arrive at it:
First of all, osu.Framework.Tests didn't log the exclusive fullscreen capability properly until a later commit, which is way after the regression occured, but it would display in osu!, so I ran git bisect on the osu! repo first, starting from https://github.com/ppy/osu/pull/20506 and got until the point where exclusive fullscreen detection was wrong (a framework bump)
osubisect.log
Then, once I was on that commit, I noted down framework version from osu.Game.csproj, executed .\UseLocalFramework.ps1, and tested two versions of osu-framework, 2022.1219.0 and 2022.1216.1, confirming that the latter was functioning correctly.
Afterwards I ran git bisect on osu-framework for those tags and tested osu! on each specific commit to narrow it down. I had to do git bisect skip on a bunch of commits that didn't build individually (neither osu.Framework.Tests nor osu.Desktop), and this is the resulting git bisect log:
frameworkbisect.log
I have asked a friend w/ an Nvidia GPU to check the latest osu! release and they confirmed Exclusive Fullscreen capability is being detected properly on their end, which makes me believe this has something to do with an Intel specific check introduced in https://github.com/ppy/osu-framework/pull/5432 failing after the PR mentioned in OP.
Which renderer? It's known to not work under direct x, for instance.
OpenGL (Legacy). I have made sure to always be on it at every bisect step, since the check is supposed to work only on OpenGL (Legacy)
Just to make sure (since neither framework nor osu! log or show which renderer they use at that point in time), I used RenderDoc to see which API the game is using. I also used PresentMon to check whether the game is entering the same Present Mode
Before the PR:
After: