Commits
- 66956de GPUPresenter: Avoid empty viewport on blank deinterlace
- 0614262 GPU/HW: Fix inconsistent device state after blank deinterlace
- 4b30147 D3D12Device: Avoid render pass end when setting same target
- af305d3 D3D12Device: Avoid second fence wait for infrequent readback
- 5e6a18a VulkanDevice: Wait before starting next command buffer
- d67b9b9 OpenGLDevice: Don't use glGetTextureSubImage() on NVIDIA
- 1a81adb GPUThread: Fix crash concurrently changing renderer and deinterlacing
- 6f9752a VulkanDevice: Simplify EndAndSubmitCommandBuffer() a bit
- c76ee85 VulkanDevice: Don't submit during image acquire
- d3bff97 Settings: Default optimal frame pacing to enabled
- 4281de3 Qt: Make settings update check ignore skipped updates
- ba180d6 Qt: Add option to edit game list serials
- 1379d3a Qt: Fix recommended value for Optimal Frame Pacing
- 60ab6a9 Qt: Reflect new defaults in settings help (#3687)
- 81bee31 ImGuiManager: Fix possible memory leak on shutdown
- dedc590 ImGuiManager: Allow renderer switch without destroying context
- 65bb5bc ImGuiManager: Adjust fixed-width font weight based on DPI
- ac8502c ImGuiManager: Swap fixed-width font to Google Sans Code
- 91b0ed9 ImGuiManager: Use text font for frame time overlay
- 2ac1d89 Spanish (Spain) translation update. (#3688)
- 4d6932e GameDB: Tighten timing in Wing Commander III
- 6c013db ImGuiManager: Increase font weight for OSD settings
- 1608a6f FullscreenUI: Adjust footer item spacing
- 3a53a89 Qt: Fix double save of custom serials
- ac1e6b5 GameList: Fix some interactions with custom serials
- 21dfa47 GameDB: Disable auto analog in
Mizzurna Falls(#3689) - dcebea1 GameDB: Adjust cropping in FF8 and FF9
- 83b3a2e GameDB: Adjust cropping in Threads of Fate
- 0a9a77c Qt: Move OSD and Capture settings to their own sections
- 0f35e4e Qt: Drop workaround for Classic Windows theme change bug
- a0fbffe Qt: Don't store unneeded references to settings pages
- 1f672d3 ImGuiManager: Fix spacing for media capture timer overlay
- 38c6c3e Qt: Improve grouping of OSD options
- dc69e3f Qt: Fix conflicting accelerators in Settings menu
- 2da35d2 dep/rcheevos: Prioritize unsynchronized bucket over recently unlocked
- 8643068 Achievements: Fix unsynchronized achievements missing from list
- ddcc2e0 Achievements: Add missing lock to GetPauseThrottleFrames()
- 499c08a Achievements: Warn on shutdown when unlocks are unconfirmed
- fb682a9 Qt: Fix incorrect tab indices in graphics settings
- 6be96f6 GameDB: PGXP CPU for World's Scariest Police Chases
- 5c0a227 Qt: Ensure fields in MemoryViewWidget are initialized
- 27afb31 Achievements: Fix overlap when >1 leaderboard tracker active
- 7e48486 Achievements: Reduce the size of challenge notifications
- df75737 WindowInfo: Move prerotation enum to global scope
- 9b299fe GPUPresenter: Convert to namespace
- 370df62 Qt: Add option to use the system font on Linux
- 63102e9 Qt: Avoid locals symbol name clash in qtthemes.cpp
- a04a312 GPUThread: Rename to VideoThread
- 208a8a5 GPUPresenter: Rename to VideoPresenter
- 219ee20 PostProcessing: Fix depth buffer always being requested
- 31f9be1 VideoPresenter: Simplify post-processing settings update
- 0bbb5b7 Qt: Fix tab order in OSD settings again
- 7c4bcef Atualização Português do Brasil (#3691)
- 4c523a6 VideoThread: Rename some missed references
- 92b888f VideoThread: Fix overreserve in command allocator
- 5516f7a Misc: Use 'Render Window' consistently instead of 'Display Window'
- 335145b VideoThread: Avoid possible null presentation in PresentFrameAndRestoreContext()
- 25211c6 VideoPresenter: Move present throttling from VideoThread
- 36788b8 Misc: Eliminate unnecessary atomic thread fences
- c28282c Qt: Always use FullscreenUI for confirm message if system valid
- a875254 Controller: Add option to use right analog as trigger buttons (#3692)
- d45e121 Qt: Remove QtUtils::GetRootWidget()
- 8e5ec64 Qt: Adjust window bring-up order
- 6f39b2f Qt: Fix fixed-width font not loading
- 2fd81f5 ImGuiManager: Make margins consistent across OSD/achievements
- f4b3d1c FileSystem: Add SetPathExecutable()
- 0aa6e1e Qt: Add popup to create desktop file on Linux
- 1330184 Qt: Fix log window appearing in front of main window on KDE
- f245357 Qt: Move state into QtHost namespace
- a87d2ae Qt: Fix application name in task switcher on GNOME
- 130494f Qt: Allow changing executable with drag/drop
- 7235494 VideoPresenter: Ensure skipped_present_count is zeroed
- 467f2fa StateWrapper: Avoid unnecessary include
- e509092 Common: Fix string tests building
- 5cf8d08 GameDB: Max speedup cycles for Disruptor and Rescue Shot (#3693)
- 511058d Qt: Fix crash on Linux when opening game properties (#3694)
- 0aca150 Common: Fix incorrect float rvalid()
- 1cfde39 Deps: Version updates
- 44e055b Misc: Use delta from initial value for input binding
- c13d04e InputManager: Remove Sensor source
- 668a930 SDLInputSource: Add sensor (accelerometer) support
- d66db16 Qt: Add controller sensor mapping
- 0f280ac InputManager: Remove padding from struct
- 2924126 Qt: Avoid rich text in message boxes (#3695)
- b330b3e CMake: Simplify Metal shader build
- fa4d084 CMake: Simplify resource copy
- 566681f D3D11Device: Add missing push constant buffer destroy
- d6915fb D3D11Device: Fix assigning integer to boolean
- b20c2b2 Common: Add additional unit tests
- 7db0555 CMake: Bump version requirement
- 9630464 CMake: Remove pointless flags change
- a64272b PostProcessing/FX: Fix incorrect min_point_mag_linear_mip_point translation
- 87c4b66 OpenGLDevice: Fix error reporting in CreateFramebuffer()
- 6685668 OpenGLDevice: Fix error reporting in SetSwapInterval() and SetVSyncMode()
- ca49dd1 HTTPDownloader: Fix error description for WinHttpOpenRequest()
- 84ff25e HTTPDownloader: Fix return value of curl write callback
- e81fa84 HTTPDownloader: Add missing error status assignment
- c60e3aa VideoThread: Fix core thread view missing surface format
- fbf4cdd dep/rcheevos: Bump to dedfe2d
- 7df574c Achievements: Fix notification icon opacity
- 86dcbc6 Achievements: Remove hidden leaderboard check
- 2bd0a6a VulkanDevice: Fix incorrect stage bits for compute PushUniformBuffer()
- 3a54524 VulkanDevice: Add missing scissor clamp in SetInitialPipelineState()
- 59aeb1e VulkanDevice: Fix query index in WaitForCommandBufferCompletion()
- d8b8897 Qt: Reverse window open order on all Wayland platforms
- fcd3f97 README: Update resource overrides section
- 186d558 FileSystem: Check fclose() for WriteBinaryFile()/WriteStringToFile()
- 22c8d91 Installer: Add windows installer program
- 4756b17 Installer: Add Windows uninstaller program
- 7e4efbf CI: Generate Windows installers
- 5bf65fe Installer: Calculate estimated size for uninstaller entry
- 43cf1d9 Installer: Share progress callback with updater
- dc78763 Spanish (Spain) translation update (#3696)
- faf988b System: Match console region to BIOS region when starting BIOS
- bcd7a43 InputManager: Fix typo in variable name
- ab959a5 InputManager: Always call SetHook()/RemoveHook() on core thread
- 653d04c InputManager: HasAnyBindingsForSource() shouldn't check subtype
- 682c9c6 InputManager: Only enable sensor polling if there are bindings
- 372e1f3 InputManager: Fix needing double press for button binding