122 Commits

Author SHA1 Message Date
Henrik Rydgård 928cdea420 Fix vulkan validation error after #21616
See #21616
2026-06-05 10:09:23 +02:00
jasaaved 5e25118043 Fix the exclusive fullscreen config guard and switching the setting on/off
Previously the exclusive fullscreen option in the settings screen was
guarded by a compile-time #ifdef VK_EXT_full_screen_exclusive, which is
always true on Windows. It now uses a runtime fullScreenExclusiveSupported
cap derived from whether the extension is actually enabled by the driver.

Switching between borderless and exclusive fullscreen currently requires a
restart. This is because once DWM has claimed the window (any frames
presented), ALLOWED_EXT cannot re-engage exclusive mode on an existing
swapchain. A new process gets a fresh HWND that DWM has not claimed yet,
so ALLOWED_EXT works correctly at startup.

The proper fix is to use VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
with vkAcquireFullScreenExclusiveModeEXT/vkReleaseFullScreenExclusiveModeEXT
to explicitly negotiate exclusive mode with DWM mid-session without needing
a restart. To be done in a follow-up.
2026-06-03 17:15:13 -07:00
jasaaved 0c23cdaf3d Windows Vulkan: default to borderless fullscreen, add exclusive option
Vulkan swapchain now explicitly sets VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT by default, enabling proper borderless fullscreen behavior with benefits including better Alt+Tab, VRR/G-Sync/FreeSync, and Auto HDR support.
2026-06-03 17:15:13 -07:00
Henrik Rydgård 85ddf03c4b Vulkan: Remove deprecated use of device layers 2026-05-13 23:09:04 +02:00
Henrik Rydgård 4c2be7f8af More work. Some initialization order problem. 2026-04-23 13:31:51 +02:00
Henrik Rydgård 317f811ca2 Slight improvement to our terrible GPU performance heuristic 2026-04-07 11:39:39 -06:00
Henrik Rydgård 845f9f3d55 Add missing check to Vulkan init. Disable validation on android-x86-64
The latter is broken in the Android SDK emulator.
2026-02-27 23:57:50 +01:00
Henrik Rydgård 236a0acf71 Minor tweaks 2026-02-06 11:37:09 +01:00
Henrik Rydgård 68a8ba856f Warning fix, delete unused code 2026-01-24 10:43:48 +01:00
Henrik Rydgård 042cf87248 Rework the present mode settings, refactor. 2025-10-20 21:28:38 +02:00
Henrik Rydgård b4f7635719 Vulkan: Check the available present modes right after initializing the surface 2025-10-20 19:52:24 +02:00
Henrik Rydgård 80bd32325c Move the present mode from the CreateInfo to InitSwapchain 2025-10-20 16:33:34 +02:00
Henrik Rydgård 6338832015 Vulkan: Smoothly recreate the swapchain using oldSwapchain on "resize" on Windows 2025-10-20 15:42:34 +02:00
Henrik Rydgård 92f5db7445 Remove further references to the fixed ui_atlas. CMakeLists.txt improvements. 2025-09-17 09:56:17 -06:00
Henrik Rydgård 2cf0ffea73 Allow choosing the frame presentation mode in detail in Vulkan mode 2025-08-21 01:01:16 +02:00
Henrik Rydgård c0b7ecc686 Refactor: Unify the Vulkan init info logic 2025-08-21 01:01:16 +02:00
Henrik Rydgård 5e05a6d0ac Get rid of some more backward Common/Core dependencies 2025-08-06 00:16:35 +02:00
Henrik Rydgård 9137eedb7b Windows/Vulkan: Correctly handle minimizing and restoring the window
We can't create a swapchain in this case but we still want emulation to
keep running. So we ditch the last renderpass in VulkanQueueRunner but
run all the rest (if PauseWhenMinimized isn't set).

Now works without any validation errors or hangs.
2025-07-18 20:01:48 +02:00
Henrik Rydgård a36d3cf18d Logging improvements / despam 2025-05-21 21:42:08 +02:00
Henrik Rydgård 7792e01545 Vulkan: RenderCompleteSemaphores are now per swapchain image, instead of per-buffered-frame. 2025-05-20 11:39:08 +02:00
Henrik Rydgård 50b604e010 Log fixes 2025-04-15 14:29:40 +02:00
Henrik Rydgård 6eefe8c982 Vulkan init: Slight logging reduction 2025-04-13 15:21:29 +02:00
Henrik Rydgård 67dfbfe97e Add developer setting to prevent loading overlays (and other 'implicit' Vulkan layers) 2025-04-10 18:56:05 +02:00
Henrik Rydgård 670ff21529 Make the Vulkan init flags a proper enum class 2025-04-10 18:16:05 +02:00
Henrik Rydgård 85304d58a8 Warning fixes 2025-03-27 14:45:42 +01:00
Henrik Rydgård 948c38a034 Some more minor fixes 2025-02-04 10:24:55 -06:00
Henrik Rydgård 6e0cafccb9 Request Vulkan 1.4 if available. 2025-01-17 14:27:08 +01:00
Nukem d3aeff861e libretro: Restore Vulkan MSAA video option 2025-01-10 16:13:16 -05:00
Henrik Rydgård f5a4669cb4 Remove obsolete ifdef 2024-11-07 10:17:56 +01:00
Henrik Rydgård 8c8b34aac4 Vulkan: Separate the instance and device API versions, for extension loading purposes 2024-09-25 18:38:31 +02:00
Henrik Rydgård b2d9ac54dd Make InfoField an "enum class", extract function FormatAPIVersion 2024-09-25 16:34:33 +02:00
Henrik Rydgård 144b3a8a98 Vulkan validation error cleanups 2024-07-28 08:08:48 -06:00
Henrik Rydgård 417d346e03 Vulkan validation warning fix 2024-07-19 11:43:35 +02:00
Henrik Rydgård 7c817f3ecd Add helper for Vulkan struct chaining 2024-07-19 09:45:02 +02:00
Henrik Rydgård 138193a776 Add support for the EXT_provoking_vertex Vulkan extension, allowing us to skip software transform for this case. 2024-07-17 10:41:25 +02:00
Henrik Rydgård 2a35a92514 Vulkan: Check the device features *after* the extension checks. Necessary for the next step. 2024-07-17 10:32:47 +02:00
Henrik Rydgård 9f1f75ddab Refactor: Merge the ChooseDevice function into CreateDevice 2024-07-17 10:31:49 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård 3e1d131754 Vulkan: Fall back to extension if core functions won't load. 2024-06-23 15:42:35 +02:00
Henrik Rydgård 5f79046e01 Get Vulkan rendering on iOS (still, need to hook up input etc) 2024-05-23 09:41:00 +02:00
Henrik Rydgård fea6727ffd Add a convenience method to VulkanContext to reduce code duplication
Will need the exact same code for iOS.
2024-05-23 02:13:54 +02:00
Henrik Rydgård 28ab4518ed Add a workaround and an assert, trying to fix #18982
Not sure what it is if this doesn't fix #18982.

We already seem to be doing things correctly.
2024-04-29 13:32:26 +02:00
Henrik Rydgård d28e9dc006 Minor cleanup 2024-04-06 17:03:40 +02:00
Henrik Rydgård ae6e0d182e Vulkan: Fix function loading regression affecting MSAA
When loading function that have been merged into core, use the core
names.
2024-04-05 17:28:37 +02:00
Henrik Rydgård 9f9881dfe3 Move some code, minor cleanup.
See #18987
2024-04-04 12:30:41 +02:00
Henrik Rydgård 32fe47d761 Fix or ignore some various Vulkan validation errors 2024-04-03 13:37:40 +02:00
Henrik Rydgård 86ea5665f0 Show some more Vulkan extensions in sysinfo 2024-02-01 17:08:54 +01:00
Henrik Rydgård 9253bf9cb5 Add a new screen for managing installed Adreno drivers 2024-01-17 10:51:08 +01:00
Henrik Rydgård e3177ac870 Make some global string pointers const, not just the strings.
Minor cleanup.
2023-12-29 14:09:45 +01:00
Henrik Rydgård 7634eba083 Merge pull request #18532 from dima-xd/adrenotools
Android: Implement custom driver loading for ARM64 Android devices
2023-12-14 15:54:24 +01:00