In the profile selection window:
Allow the user to start the game by double-clicking a profile to avoid having to additionally click the OK button. This avoids an unnecessary "step" to the start of the game...
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
Uses mailbox, then immediate for unlocked framerate depending on
support for either. Also adds support for FIFO_RELAXED.
This function now assumes vsync_mode was originially configured to a value
that the driver supports.
vk_swapchain: ChooseSwapPresentMode determines updates
Simplifies swapchain a bit and allows us to change the present mode
during guest runtime.
vk_swapchain: Fix MSVC error
vk_swapchain: Enforce available present modes
Some frontends don't check the value of vsync_mode before comitting it.
Just as well, since a driver update or misconfiguration could problems
in the swap chain.
vk_swapchain: Silence warnings
Silences GCC warnings implicit-fallthrough and shadow, which apparently
are not enabled on clang.
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
We don't need the whole EmuWindow when creating a surface,
and it creates onerous requirements outside of typical usage for
creating a surface elsewhere.