When Vulkan devices are enumerated, this also determines the available
present modes for each device, maps them to a vector, and gives
those options to the user.
OpenGL options are limited to On/Off.
Required creating a VkSurfaceKHR during device enumeration, which
may or may not be desireable. For the sake of a less confusing UI.
Also fixes a bug where if a graphics device disappears on the host, we
don't try and select the non-existant devices.
configure_graphics: Remove vsync runtime lock for Vulkan
configure_graphics: Recommend Mailbox present mode
configure_graphics: Fix type-limits warning
configure_graphics: Clean up includes
configure_graphics: Add tooltip
Those vulkan settings do not correspond 1:1 to the swap intervals that
they set for OpenGL, so remove it.
bootmanager: Add missing include
I didn't add this log why did it break
Function is useful outside of bootmanager, so put it in a common place.
qt_common: Add missing include
qt_common: Add some newlines
qt_common: Add trailing newline
qt_common: Add trainline newline
Previously, yuzu would try and guess which vsync mode to use given
different scenarios, but apparently we didn't always get it right. This
exposes the separate modes in a drop-down the user can select.
If a mode isn't available in Vulkan, it defaults to FIFO.
On Windows, a borderless window will be treated the same as exclusive fullscreen
when the window geometry matches the physical dimensions of the screen.
However, with High DPI scaling, when the devicePixelRatioF() is > 1, the borderless
window apparently is not treated as exclusive fullscreen and functions correctly.
One can verify and replicate this behavior by using a high resolution (4K) display,
and switching between 100% and 200% scaling in Windows' display settings.
At 100%, without the addition of 1, it is treated as exclusive fullscreen.
At 200%, with or without the addition of 1, it is treated as borderless windowed.
Therefore, we can use (read: abuse) this difference in behavior to fix this issue for
those with higher resolution displays when the Qt scaling ratio is > 1.
Should this behavior be changed in the future, please revisit this workaround.