Commit Graph

7679 Commits

Author SHA1 Message Date
Stenzek 0c30acb285
Qt: Work around QtWayland bugs
- Render to main no longer screws up the game list/menu bar.
- Toggling render to main no longer breaks the main window.

Positioning still sucks, but the various groups involved would
rather sit around arguing with each other rather than actually
shipping solutions ¯\_(ツ)_/¯.
2025-02-16 22:16:19 +10:00
Stenzek cb10c6fbf4
Qt: Ensure build warning is themed 2025-02-16 22:16:17 +10:00
Stenzek 5bd1a492be
GameDatabase: Turn PGXPPreserveProjFP into a boolean setting 2025-02-16 19:02:56 +10:00
Stenzek e688e24eb9
GTE: Use floating-point math for preserve-proj-fp 2025-02-16 18:04:24 +10:00
Stenzek 9928d01ac4
Common: Fix ARM64 build on clang-cl 19
Also fix Vector4 extract32().
2025-02-16 18:03:33 +10:00
Stenzek cba9d00019
Qt: Further improve async cover loading
- Fix non-square images not centering.
- Fix possible crash when changing scale quickly.
- Avoid repeatedly resizing placeholder.
2025-02-16 13:18:37 +10:00
Anderson Cardoso b45f9c39c7
Atualização Português do Brasil (#3373)
Atualizado para a última versão.
2025-02-16 13:18:22 +10:00
Stenzek 1b3ca81efc
Qt: Fix hotkey search placeholder localisation 2025-02-15 23:02:19 +10:00
Stenzek 369f62318f
Cheats: Only display codes for selected revision 2025-02-15 22:45:17 +10:00
shikulja 4562573711
Update Russian translation (#3372)
* Update ts

* Update Russian translation

* .
2025-02-15 22:44:50 +10:00
Stenzek ce8b1f0996
GPU: Small optimization to lanczos shader
Apparently the Adreno shader compiler can't do this on its own.

~23% performance improvement.
2025-02-15 17:44:41 +10:00
Stenzek 958fd0049c
GPU/HW: Don't use shader for self-overlapping copies
If we use the shader here, we're going to immediately end the
render pass since the area we read and wrote to is going to be
dirty again.

This is problematic on Mali where the render passes are really
expensive. Test case: Dino Crisis 2 - open menu
2025-02-15 17:20:30 +10:00
Stenzek 8772c336ec
CPU: Don't stall until GTE completion on write
Apparently this is what the real CPU does, and some very optimized
code can run slower if we stall early.

Obviously if you write to a register being read by the command,
things are going to break.
2025-02-15 12:57:18 +10:00
Stenzek 7d80a74dc3
GameDatabase: Remove now-unused traits 2025-02-15 12:57:02 +10:00
Stenzek 2bfc408242
Bus: Enable mmap fastmem on uppermost KSEG0 mirror
Instead of mapping all the RAM mirrors, we only map the KSEG0
uppermost mirror. This is where some games place their stack, so
we avoid the backpatching overhead/slowdown, but don't pay the
cost of 4x the mprotect() calls when a page's protection changes,
which can have a non-trivial impact on slow ARM devices.
2025-02-15 12:42:43 +10:00
Stenzek e9bfca8cca
System: Add 'Fast Forward Memory Card Access' option
Does what it says on the tin.
2025-02-15 12:38:32 +10:00
Stenzek 13d58d8ed0
Qt: Move fast boot/fast forward to console settings
Makes more sense there, and matches Android.
2025-02-15 12:32:22 +10:00
Stenzek f4aa5e1b98
MemoryCard: Filename -> Path 2025-02-15 11:39:31 +10:00
Stenzek e0620fcd40
System: Fix setting-altering game patch behaviour
e.g. overclock was only half applying
2025-02-14 23:50:34 +10:00
Stenzek bceadadcb4
Image: Fix possible unaligned movaps 2025-02-14 22:51:29 +10:00
Stenzek 6802f77cb9
CrashHandler: More Wcast-function-type-mismatch fixes 2025-02-14 22:06:44 +10:00
Stenzek ced9ee4b0b
Qt: Update glyph ranges 2025-02-14 19:02:22 +10:00
Stenzek dc6d6b91d4
PostProcessing: Fix abort on slow compile in big picture 2025-02-14 19:01:40 +10:00
Stenzek 5060e72b96
Qt: Fix missing vibration binding for NegConRumble 2025-02-14 19:01:40 +10:00
Stenzek 5ae32d3c70
System: Fix black screen when changing options while paused 2025-02-14 19:01:40 +10:00
Stenzek 953bd0919b
RegTest: Fix flipped images in OpenGL
We're reading the framebuffer, not rendered image.
2025-02-14 19:01:40 +10:00
Stenzek b68d7c8adb
Image: Vectorize RGBA8 conversion and add A1BGR5 2025-02-14 19:01:40 +10:00
Stenzek 9b2cf0abbd
InputSource: Fix Wcast-function-type-mismatch 2025-02-14 19:01:40 +10:00
Stenzek 5913de947f
VulkanDevice: Fix incorrect texture format for A1BGR5 2025-02-14 19:01:40 +10:00
Stenzek 3a44c3a758
GPU: Fix prerotated presenting with OpenGL 2025-02-14 19:01:39 +10:00
zkdpower f90fdf66c8
Update the Simple-Chinese translation to latest. (#3371)
* Update the Simple-Chinese translation to latest.
2025-02-14 19:01:28 +10:00
Stenzek 7bc18c8538
DDGoController: Rewrite to support axis input
And add virtual buttons for each of the possible states.
2025-02-12 21:52:02 +10:00
Anderson Cardoso cd89f62935
Atualização Português do Brasil (#3369)
Atualizado para a última versão.
2025-02-12 19:22:13 +10:00
Stenzek ce616f1c5c
Cheats: Reapply frame end codes immediately on reload
Otherwise you end up with a single frame where the old code is used.
2025-02-10 23:45:24 +10:00
Stenzek c137c562cd
Qt: Fix incorrect recommended value 2025-02-10 23:45:24 +10:00
Stenzek 36d5708391
GPU/HW: Fall back to replacements from first disc
So you only need one copy.
2025-02-10 23:45:24 +10:00
Daniel Nylander f6e8ebec99
Updating Swedish translation (100%) (#3367) 2025-02-10 23:44:23 +10:00
zkdpower 2876713f0f
Update the Simple-Chinese translation to latest. (#3368)
* Update the Simple-Chinese translation to latest.

* Update the Simple-Chinese translation to latest.
2025-02-10 23:44:11 +10:00
Stenzek ef4c00a896
Qt: Use display name for a couple of recommended values 2025-02-10 02:21:19 +10:00
Stenzek 7a587d927f
Qt: Fix overlapping widgets in macro trigger shift-click 2025-02-10 02:15:27 +10:00
zkdpower 788b9cd3bf
Update the Simple-Chinese translation to latest. (#3365) 2025-02-10 02:00:38 +10:00
Víctor "IlDucci c1f8a525ca
Spanish (Spain) translation update 2025-02-09 (#3366)
Adding latest changes and cleaning up unused translations.
2025-02-10 01:59:49 +10:00
Stenzek 5fb5dcdd70
Achievements: Improve summary popup
Put hardcore mode notice on its own line, rather than in
parenthesis in the title.
2025-02-09 18:24:06 +10:00
Stenzek 46ae3e55ea
Cheats: Show disabled code count when HC/safe mode is active 2025-02-09 17:45:19 +10:00
Stenzek 4ce48abfc1
GPU/HW: Fix incorrect source rect for page replacements 2025-02-09 17:45:16 +10:00
Stenzek ac4ef4f853
Gt: Update glyph ranges 2025-02-09 16:50:02 +10:00
zkdpower 07f973076d
update the Simple-Chinese Translation to latest. (#3363) 2025-02-09 16:49:38 +10:00
Stenzek 8132c51a12
Cheats: Add 'Ignore' field to file format
Codes with Ignore set to true will not be listed/loaded.
2025-02-09 15:58:23 +10:00
Stenzek 4236beabaf
System: Fix setting-altering patches not applying on startup 2025-02-09 15:38:12 +10:00
Stenzek 0428a93315
Qt: Fix possible crash when rescanning game list 2025-02-09 15:04:09 +10:00
Stenzek 901927d7fe
CDROM: Don't panic on unknown register read 2025-02-09 13:23:37 +10:00
Stenzek 94b2060979
GPU: Clear display texture on fatal error 2025-02-09 13:22:03 +10:00
Stenzek 06b02183cb
GPU/HW: Split transparent draws if dual-source blend unsupported
The ordering is not correct otherwise. Ape Escape has a bunch of
overlapping sprites that have a mix of opaque and transparent texels,
and the transparent texels are repeated multiple times when the
opaque texels should cancel them out.

Only affects old Mali drivers.
2025-02-09 13:07:53 +10:00
Stenzek 2663ac9666
CDImage: Improve PBP load error reporting 2025-02-08 17:33:58 +10:00
Stenzek 160c34ef28
CDROM: Avoid additional stat() call loading subchannel
And use BuildRelativePath() for title-based subchannel files.

Fixes flaky loading on Android, some devices return a zero-sized file
when querying a non-existant file.........
2025-02-08 15:54:38 +10:00
Stenzek 81bca06707
System: Add hash to OnGameChanged 2025-02-08 15:03:17 +10:00
Stenzek acb355a8c3
CDImage: Make .bin loader track length match .cue
Fixes different hashes for loading single-track .bin games directly.
2025-02-08 15:02:56 +10:00
Stenzek f2cca01e29
ImGuiManager: Fix achievement unlock icon not showing 2025-02-08 01:46:44 +10:00
Daniel Nylander 084422355a
Updated Swedish translation (#3362) 2025-02-08 01:46:34 +10:00
Stenzek 063bb96e5d
D3D11Device: Always query timestamp before present start
Fixes high GPU usage reporting in D3D11 with AMD GPUs + Optimal Frame
Pacing.
2025-02-07 15:58:35 +10:00
zkdpower 5ae6d9084a
update Chinese translation. (#3361)
just UI.
2025-02-07 12:31:58 +10:00
Anderson Cardoso 51480818cd
Atualização Português do Brasil (#3360)
Atualizado para a última versão
2025-02-06 22:04:07 +10:00
Stenzek f8c39ace1c
GPU/HW: Warning fix 2025-02-05 22:40:59 +10:00
Stenzek bee2dabc77
Misc: Replace stringstream str() with C++20 move str()
No extra heap allocation/copy.
2025-02-05 22:38:48 +10:00
Stenzek 2cfc39e874
System: Move cheat reload to Initialize() 2025-02-05 22:13:51 +10:00
Stenzek 57cb2f846e
FullscreenUI: Fix system unpausing on shutdown 2025-02-05 20:03:58 +10:00
Stenzek ecbb79c4bf
GPU: Add Lanczos scaling option 2025-02-05 20:01:26 +10:00
Stenzek 99e81f1559
GPU: Fix incorrect condition in WaitForOneQueuedFrame() 2025-02-05 19:31:01 +10:00
Stenzek c6563a4656
VulkanDevice: Require Vulkan 1.1 for most extension probing
Too much of a headache to deal with these ancient Mali drivers that
support some extensions but not full Vulkan 1.1, and VMA does not
support this scenario.
2025-02-04 17:15:29 +10:00
Stenzek 4ad2d0ac2d
GPU: Fix incorrect PAL overscan range 2025-02-03 19:31:23 +10:00
Stenzek 455836af89
CMake: Check C++20 features that are missing on some systems 2025-02-03 00:30:59 +10:00
Stenzek cb205c4c36
Qt: Show icon in settings console region dropdown 2025-02-02 22:57:59 +10:00
Stenzek af277d4d14
Settings: Default to nearest sprite texture filtering
Instead of whatever the 3D texture filter is.

Less confusing since the UI is not disconnected when upgrading from very
old releases, or Android.
2025-02-02 22:57:31 +10:00
Stenzek 59773509af
System: Recreate memory save states when device options change 2025-02-02 22:54:32 +10:00
Stenzek 1f5a10371e
GPUThread: Handle rare race condition in frame queueing 2025-02-02 22:18:13 +10:00
Stenzek 1ca5782396
Threading: Handle EINTR on sem_wait() 2025-02-02 22:17:56 +10:00
Stenzek 4ceeb58dbc
GPU: Use display size for calculating internal screenshot size
Fixes detail being lost due to added padding when not cropping.
2025-02-02 17:14:35 +10:00
Stenzek 64d3716cfd
GPU: Further simplify draw rect calculation
Remove "Stretch Vertically" option, it was very confusing to users.

Integer scale will prefer whichever direction gets a larger draw
rectangle/preserves as much detail.
2025-02-02 17:02:58 +10:00
Stenzek 0c3d55a1a1
GPU: Fix incorrect PAR with overscan cropping 2025-02-02 16:07:06 +10:00
Stenzek a5940b2e21
GPU: Use constants for display overscan range 2025-02-02 15:39:20 +10:00
Stenzek 24354cb39f
GPU: Fix more GPU thread-reading-CPU-thread-settings locations 2025-02-02 13:08:08 +10:00
Stenzek 804d90d48f
System: Fix overriding console region 2025-02-02 13:00:18 +10:00
Stenzek a681386f28
Qt: Fix some options not being disabled with SW 2025-02-01 23:19:12 +10:00
Stenzek b01c06b412
GPU/TextureCache: Prevent wrapping for replacement lookup
Fixes replacements for 8 and 16-bit textures placed in the right-most
page of VRAM.
2025-01-31 20:56:11 +10:00
Stenzek 635ae5de31
GPU/HW: Don't use sprites-as-fills for small/offscreen points 2025-01-31 19:50:33 +10:00
Stenzek d65c4efdd8
GPU/TextureCache: Prefill dumped texture list with replacements
Allows skipping dumping replaced textures without replacements enabled.
2025-01-31 15:47:22 +10:00
Stenzek b5925ab139
Achievements: Include any codepoints above 0x100 in dynamic range 2025-01-31 13:48:57 +10:00
Stenzek 03181d1179
GPUThread: Fix crash during FSUI language switch 2025-01-31 13:47:29 +10:00
Stenzek 96058f5d7e
System: Use recreation logic for toggling GPU threading 2025-01-31 12:56:19 +10:00
Stenzek f7d7eecb6c
GPU/TextureCache: Fix replacements starting in second page 2025-01-30 13:33:00 +10:00
Stenzek 44a75d6586
GPUThread: Fix setting change crash with thread off 2025-01-30 13:32:32 +10:00
Stenzek 369879e685
Settings: Log when creating EmuFolders fails 2025-01-30 02:11:23 +10:00
Stenzek aae7573e63
Achievements: Fix build with regtest 2025-01-30 02:10:49 +10:00
Stenzek 9b6021b79e
FullscreenUI: Fix progress bar padding in loading screen 2025-01-30 01:43:22 +10:00
Stenzek 0d9e6bd482
FullscreenUI: Use effective value for achievement options enable 2025-01-30 01:18:47 +10:00
Stenzek d314b25f91
System: Fix per-game achievements hardcore mode
By mostly reverting 4dd6365a99, I didn't
think of all the implications. Not just per-game HC mode, but it's also
problematic on Android too.
2025-01-30 01:18:47 +10:00
Stenzek 02234715c5
FullscreenUI: Move UpdateRunIdleState() for system soft-fail to host
That way it's always in the correct state for e.g. memory card shutdown
confirmations.
2025-01-29 20:40:14 +10:00
Stenzek 128bab29f8
Host: Allow button title override in ConfirmMessageAsync() 2025-01-29 19:19:53 +10:00
Stenzek 4dd6365a99
System: Simplify HC disable confirm on startup
Use one path on all platforms, always asynchronous.
2025-01-29 19:19:53 +10:00
Stenzek 28f6358ec5
Qt: Use FSUI to service ConfirmMessageAsync() if active 2025-01-29 19:19:53 +10:00
Stenzek 4da7692a2d
System: Adjust initialization order to better fit FullscreenUI
Fixes jankyness of rendering the landing page when trying to resume
a game with achievements active, or when loading state.
2025-01-29 19:19:53 +10:00
Stenzek 1b678d0ebc
FullscreenUI: Allow using right mouse button for 'back' 2025-01-29 19:19:53 +10:00
Stenzek 224cb6ac8e
FullscreenUI: Fix ClosePauseMenu() running on wrong thread 2025-01-29 19:19:49 +10:00
Stenzek 231ba050a2
GPUThread: Switch to borderless if exclusive fullscreen fails
Better than ending up windowed.
2025-01-29 18:20:41 +10:00
Stenzek e36dbaf255
Qt: Show current fullscreen resolution in UI even if invalid 2025-01-29 18:20:08 +10:00
Stenzek 70c45f7cf8
GPU/TextureCache: Handle replacements larger than 256x256
I left this unfinished because it was a pain...
2025-01-28 17:36:00 +10:00
Stenzek f58fa2297e
GPU/TextureCache: Only use a single palette record for C16
Stops C16 textures larger than 256x256 being split up.
2025-01-28 17:36:00 +10:00
Stenzek b0c0d6444c
GPU/TextureCache: Fix parsing of C16 replacement names 2025-01-28 17:36:00 +10:00
Stenzek 7188ab863a
GPU/HW: Treat fill-like sprites as fills if TC is enabled
Umihara Kawase Shun clears the framebuffer with a single large
sprite, which causes the texture cache to think the pages have
been drawn.
2025-01-28 17:35:52 +10:00
Stenzek d7c78eedce
GPU/HW: Fix box downsampling on OpenGL ES 2025-01-28 15:59:35 +10:00
Stenzek 0665cb5306
FullscreenUI: Further refine achievements login dialog 2025-01-27 13:34:45 +10:00
Stenzek 5630f3958b
Qt: Fix loading webp images on Windows 2025-01-26 14:01:42 +10:00
Stenzek 0e3668a7bb
GameList: Show achievement information in game list 2025-01-26 13:49:08 +10:00
Stenzek 6512ed8a8c
Achievements: Add offline tracking of progress and hash library 2025-01-26 13:49:08 +10:00
Stenzek d4b0b7fc29
Achievements: Include rc_client version in user agent 2025-01-26 13:49:08 +10:00
Stenzek 6a09d6ecda
Achievements: Don't store hash as a string
This is needed to store achievement metadata in the game list.
2025-01-26 13:30:26 +10:00
Stenzek ca509a8b97
StringUtil: Add fixed-length DecodeHex() 2025-01-25 22:35:06 +10:00
Stenzek 543704d57c
HTTPDownloader: Drop some log messages to debug 2025-01-25 22:35:06 +10:00
Stenzek 2b7a4f8d19
Qt: Avoid game list refresh on shutdown
We only need to invalidate the entries that have had their play times
changed, not the entire list.
2025-01-25 19:45:42 +10:00
Stenzek 4e97420b3b
InputManager: Switch to SDL3 2025-01-24 15:54:31 +10:00
Stenzek 573b2eb529
SPU: Move device failure message to OSD 2025-01-24 14:54:57 +10:00
Stenzek 9666abc172
FullscreenUI: Hook up to disc change hotkey 2025-01-24 13:47:55 +10:00
Stenzek dc5f85a34e
System: Display safe mode warning when toggling on 2025-01-24 12:50:35 +10:00
Anderson Cardoso 807094d627
Atualização Português do Brasil (#3357)
Atualizado para a última versão
2025-01-23 12:38:43 +10:00
Stenzek 13c7b8542d
GPUThread: Fix starting big picture mode 2025-01-23 12:37:26 +10:00
Stenzek 4da1f613b6
System: Simplify CD speedup warnings 2025-01-23 12:22:32 +10:00
Stenzek df8822760a
GPU/HW: Further tweaks to replacement alpha handling
We can't simply clear the alpha channel unconditionally here, because that
would result in any black pixels with zero alpha being transparency-culled.

Instead, we set it to a minimum value (2/255 in case of rounding error, I
don't trust drivers here) so that transparent polygons in the source still
set bit 15 to zero in the framebuffer, but are not transparency-culled.

Silent Hill needs it to be zero, I'm not aware of anything that needs
specific values yet. If it did, we'd need a different dumping technique.
2025-01-23 12:12:58 +10:00
Stenzek 9113a6e6a6
Qt: Add 'Multiple Devices' to automatic mapping
Also populate the "current device" label with the device from
the config when running the setup wizard, instead of always setting
the label to Keyboard.
2025-01-22 18:38:37 +10:00
Stenzek b08ab9f712
Qt: Fix border overlay export button 2025-01-22 18:38:37 +10:00
Stenzek d395be07ee
Qt: Fix global setting showing incorrectly for int-list 2025-01-22 18:38:37 +10:00
Stenzek 89504b0184
GPUThread: Push settings through FIFO
Saves the std::function heap allocation.
2025-01-22 18:38:37 +10:00
Stenzek f045a1742d
GPUThread: Fix order of updating state
Fixes unoverwritten textures not dumping on system shutdown.
2025-01-22 18:38:37 +10:00
Stenzek 8eaa1f312d
GPU: Fix overlay destination alpha with postfx
Also don't assume the image has premultiplied alpha.
2025-01-22 18:38:37 +10:00
Stenzek 0129679bb0
GPU: Reduce overdraw when using overlays
Clear the four borders individually instead of a blit over the
entire texture.
2025-01-22 18:38:37 +10:00
Stenzek 0166939609
PostProcessing/GLSL: Clear alpha to 1.0 2025-01-22 18:23:12 +10:00
Stenzek be75a97efe
GPUDevice: Fix swap chain clear colour normalization 2025-01-22 18:23:11 +10:00
Stenzek af58740f5d
System: Always display OSD warning messages
I regretted what I did in f2720b98dd
less than a week after I pushed the change.

As a compromise, only display the unsafe settings warnings on startup.
2025-01-22 18:23:10 +10:00
Stenzek 4e588bb6c1
GPU: Fix incorrect interface for postfx config 2025-01-21 20:55:26 +10:00
Stenzek 78f6e11b91
GPUThread: Skip debug window update on Android 2025-01-21 20:22:10 +10:00
Stenzek 19ca9cb47d
GPU/HW: Use texture loads for native resolution
Hopefully work around sampling precision issues in older AMD drivers
and Mali Midgard if we're lucky. But I don't have anything this old
to verify with.
2025-01-21 20:15:07 +10:00
Stenzek 080eccd8fc
GPUThread: Shutdown instead of panicing on switch failure 2025-01-21 20:12:38 +10:00
Stenzek 9c4b2112ae
GPU: Fix incorrect screen draw rect
Fixes loading screen in Alundra 2, as well as incorrect effective
PAR when using None crop mode.
2025-01-21 19:54:54 +10:00
Stenzek fb3e290133
GPUDevice: Move exclusive fullscreen to features
Also fixes it not enabling in D3D12 renderer.
2025-01-21 19:12:44 +10:00
Stenzek 389276bb03
GPUDevice: Normalize supports_texture_buffers => texture_buffers 2025-01-21 19:06:59 +10:00
Stenzek 9d4789e082
FullscreenUI: Fix blank screen flicker starting game
Also returns to whichever menu the system boot was initiated from.
2025-01-20 23:17:24 +10:00
Stenzek 17b0da7283
GameList: URL encode custom properties paths with brackets
Fixes custom properties not applying on restart to games with
brackets in their paths.
2025-01-20 21:59:24 +10:00
Stenzek 4b20fc6922
Path: Fix several errors in URLEncode/Decode and add tests 2025-01-20 21:44:44 +10:00
Stenzek 78902d7632
FullscreenUI: Fix several more unsafe reads 2025-01-20 19:00:51 +10:00
Stenzek f219b47e98
FullscreenUI: Use constant width/height scale on Android
Fixes achievement notifications being differently sized
depending on the screen rotation.
2025-01-20 00:01:46 +10:00
Stenzek 7c2488c942
PostProcessing/GLSL: Fix image moved off-screen with alignment 2025-01-19 21:40:38 +10:00
Stenzek c03b6f3d84
Misc: Replace isspace() usage with StringUtil::IsWhitespace()
Avoids the UB if the character is negative (e.g. reading from a binary
file), as well as locale-specific rubbish.
2025-01-19 21:29:14 +10:00
Stenzek 21b167d382
CDImage: Tidy up Open() method 2025-01-19 21:29:14 +10:00
Stenzek 7905793ae0
GPU: Use screen alignment for overlay instead of display rect 2025-01-19 21:13:16 +10:00
Stenzek 8c5c0e6114
Common: Fix Vector2->Vector4 zero-extend constructor
And add loadl(const GSVector2i&) as an easier-to-read overload.
2025-01-19 21:13:16 +10:00
Stenzek ade8bf7b3b
GPU: Fix overlay+postprocessing combination 2025-01-19 21:13:16 +10:00
Stenzek 9fdeeb3fb6
GPU: Add alpha blending support to overlay 2025-01-19 16:37:51 +10:00
Stenzek 9b8d2a88de
System: Required changes for Android 2025-01-19 15:31:58 +10:00
Stenzek e1cbb50c64
GPU: Fix various capture/screenshot issues
- Simplify functions for rendering display.

- Post-processing should only when the target size matches the window.
  Otherwise the shaders are constantly recompiled.

- Include border overlay in capture/screenshots when above condition
  is satisfied.

- Relax video alignment size when using screen resolution + auto.

- Fix "Internal Resolution (Uncorrected)" capture mode.
2025-01-19 13:42:38 +10:00
Stenzek 725dcea05a
GPU: Fix crash toggling border overlays 2025-01-19 12:25:19 +10:00
Stenzek 6131ddbefe
GPU: Fill in unused/padded area in overlays 2025-01-18 22:59:49 +10:00
Stenzek 88b43370dc
GPUDevice: Replace explicit GL_PUSH/GL_POP with nested GL_SCOPE 2025-01-18 22:59:49 +10:00
Stenzek d62261e7a4
GPUDevice: Allow nested GL_SCOPE macros 2025-01-18 22:59:49 +10:00
Stenzek e0a9bbe600
PostProcessing: Move into GPU presenter
Means that the renderer can be changed without reloading shaders,
and speeds up config change detection.
2025-01-18 22:59:48 +10:00
Stenzek d589696eff
PostProcessing: Get rid of GPU-dependent globals 2025-01-18 22:59:48 +10:00
Stenzek 338d29d271
GPUDevice: Move empty/null texture to base class 2025-01-18 22:59:48 +10:00
Stenzek 609fa5c7d7
GPUDevice: Add sampler cache to base class
Removes per-backend bookkeeping in D3D12 and Vulkan.
2025-01-18 22:59:48 +10:00
Stenzek da13579356
GPU: Align presenter/backends to cache line 2025-01-18 22:59:48 +10:00
Stenzek dd9788262e
GPU: Refactor display presentation workflow
Adds the ability to set overlays, and fixes postfx with prerotation.
2025-01-18 22:59:48 +10:00
Stenzek 6cba825bac
System: Add fatal error shutdown path
Switch to a null backend and shut down the system instead of crashing.
2025-01-18 22:59:48 +10:00
Stenzek d52bf795e4
GPU: Split backend into Backend+Presenter 2025-01-18 22:59:48 +10:00
Stenzek 8f19ac2dee
System: Set rapidyaml error handlers on startup
That way it can be used in multiple places.
2025-01-18 22:59:48 +10:00
Stenzek 08d2586a86
System: Allow host to set async worker count
For regtest.
2025-01-18 22:59:48 +10:00
Stenzek e41f179108
PostProcessing: Fix erroneous reload message 2025-01-18 22:59:48 +10:00
Stenzek 1481c1d231
System: Post-processing is shut down on GPU thread 2025-01-18 22:59:48 +10:00
Stenzek b9822602b2
FullscreenUI: Show game icons in game list 2025-01-18 22:59:48 +10:00
Stenzek f98b904c50
FullscreenUI: Add 'Set Cover Image' to game list 2025-01-18 22:59:48 +10:00
Stenzek 7cc47551a4
FullscreenUI: Fix parent scroll resetting on directory change 2025-01-18 22:59:48 +10:00
Stenzek e34d23c8e7
FullscreenUI: Implicitly close non-multichoice dialogs
Also fixes disc swap using a multichoice instead of single.
2025-01-18 22:59:47 +10:00
Stenzek a7ab53f02c
GPU: Fix GLSL ES compile error with weave deinterlacing 2025-01-18 22:59:47 +10:00
Stenzek 43e7be902c
Misc: Add missing error reporting to a couple of WriteBinaryFiles() 2025-01-18 22:59:47 +10:00
Stenzek 227c249d7f
FullscreenUI: Skip SVG prefix if image is not a SVG 2025-01-18 22:59:47 +10:00
Stenzek c34dda39b7
FullscreenUI: Fix invalidating images with size hints 2025-01-18 22:59:11 +10:00
Stenzek e8a4296fd6
FullscreenUI: Add missing settings lock acquire 2025-01-18 22:59:10 +10:00
Stenzek e94973cd28
FullscreenUI: Fix disc swap running on GPU thread 2025-01-18 13:48:05 +10:00
Stenzek d054d76a76
FileSystem: Add Error to CopyFilePath() 2025-01-18 13:48:05 +10:00
Stenzek fbb63a81a8
FullscreenUI: Change default background and add Strobe 2025-01-17 16:05:24 +10:00
Stenzek 7deaaa8b26
FullscreenUI: Use ImGui dialogs for boot failure 2025-01-17 14:30:22 +10:00
Stenzek e554456a00
System: Fix blank display on pause-on-start 2025-01-17 14:20:37 +10:00
Stenzek 3be4f1983d
GPU: Fix playback of VRAM updates during draws 2025-01-17 13:22:40 +10:00
Stenzek bf7ca1951e
Qt: Fix game list search box oversizing 2025-01-17 12:56:06 +10:00
Anderson Cardoso 2957f55450
Atualização Português do Brasil (#3356)
Atualizado para a última versão
2025-01-17 13:56:32 +10:00
Stenzek 092b2803c5
GPU/HW: Flipping the mask bit test should flush 2025-01-16 23:50:40 +10:00
Stenzek cd8a160d8d
GPU/HW: Clear alpha channel in opaque replacements
This is the value for bit15 in the framebuffer. Silent Hill
needs it to be zero, I'm not aware of anything that needs
specific values yet. If it did, we'd need a different dumping
technique.
2025-01-16 23:25:24 +10:00
Stenzek add76c267a
Achievements: Fix request spam downloading own badge icon 2025-01-16 22:13:02 +10:00
Stenzek c4a7456689
GPU/SW: Use no_unique_address for potentially-unused varyings 2025-01-16 22:13:02 +10:00
Stenzek 804b8ff777
CDROM: Remove redundant min() 2025-01-16 21:45:34 +10:00
Stenzek 10de915ae0
System: Remove 'sync_to_host_with_vsync'
Disabling the throttler with threaded rendering just leads to the CPU
thread pushing multiple frames, and getting backpressured from the GPU
thread. In other words, input lag.
2025-01-16 21:45:30 +10:00
Stenzek 074a8a2653
GPUThread: Fix input OSD with threaded rendering off 2025-01-16 21:38:45 +10:00
Stenzek f6f709bcc5
System: Fix vsync preventing fast forward/turbo 2025-01-16 21:14:21 +10:00
Stenzek 0507054675
Common: Add vector rsize() 2025-01-16 21:01:30 +10:00
Stenzek 93771981a6
FullscreenUI: Add sort alphabetically option to cheat page 2025-01-16 13:47:09 +10:00
Stenzek 79245b6cd6
FullscreenUI: Make footer text background semitransparent 2025-01-16 01:14:22 +10:00
Stenzek 57f3fee28c
Common: Further optimize alltrue()/allfalse() on ARM 2025-01-16 00:43:33 +10:00
Stenzek 0189e1ef81
Common: Fix vector allfalse() on ARM32 2025-01-15 23:53:48 +10:00
Stenzek 45b500bc2c
GPU/HW: Fix draw call count spiking in some scenarios 2025-01-15 22:50:29 +10:00
Stenzek 3687697d0e
CPU/CodeCache: Only reset used portion of buffer
Saves writing 48MB every reset.
2025-01-15 21:02:56 +10:00
Stenzek 1952869cdc
Cheats: Author field should be exported 2025-01-15 21:02:56 +10:00
Daniel Nylander 68d9971171
Updated Swedish translation (#3355) 2025-01-15 21:02:40 +10:00
Stenzek 050bda8cd2
FullscreenUI: Fix scroll reset on resume state popup 2025-01-14 21:07:00 +10:00
Stenzek 135d99ac17
FullscreenUI: Fix incorrect help text 2025-01-14 21:07:00 +10:00
Stenzek 7973a91438
FullscreenUI: Make menu item backgrounds slightly transparent
Blends with background.
2025-01-14 21:07:00 +10:00
Stenzek 2e95667ec2
Qt: Fix returning to desktop mode from Big Picture 2025-01-14 20:51:13 +10:00
Stenzek bbb1befa43
RegTest: Build fix 2025-01-14 20:51:13 +10:00
Stenzek 2fd89403f8
FullscreenUI: Name landing icon files after action 2025-01-14 19:05:18 +10:00
Stenzek 3130e16438
FullscreenUI: Add user-selectable backgrounds 2025-01-14 18:59:42 +10:00
Stenzek ccb2b61444
FullscreenUI: Fix incorrect back button 2025-01-14 16:33:24 +10:00
Stenzek 1aa1b5a7ec
Qt: Make main toolbar editable 2025-01-14 16:33:24 +10:00
Anderson Cardoso 6a6d36267d
Atualização Português do Brasil (#3354)
Atualizado para a última versão.
2025-01-14 13:53:37 +10:00
Stenzek 880c76da24
Qt: Fix columns being hidden after editing cheats 2025-01-14 13:53:09 +10:00
Stenzek 3a13806f73
Hotkeys: Fix Toggle OSD hotkey 2025-01-14 13:49:49 +10:00
Stenzek 88e18a8659
Image: Fix crash on loading corrupted JPEG file 2025-01-14 13:29:14 +10:00
Stenzek da1590ed5f
Qt: Fix cheats sort button tooltip 2025-01-13 23:49:59 +10:00
Stenzek 6db1dbbe02
GameList: Don't return nonexistant path on icon extract fail 2025-01-13 23:49:09 +10:00
Stenzek 33c0674a9f
Qt: Remove unused struct 2025-01-13 23:18:52 +10:00
Stenzek 991405ce06
Qt: Add search and sorting to cheat list 2025-01-13 22:45:59 +10:00
Stenzek 0dc257abe4
System: Set time constraints for GPU thread on MacOS
Fixes erratic frame times.
2025-01-13 19:51:35 +10:00
Stenzek d3854d095e
AnalogController: Use variant vibration icon for large motor 2025-01-13 19:49:56 +10:00
Stenzek f6c7681ef0
ImGuiOverlays: Double buffer input OSD and add vibration 2025-01-13 16:49:31 +10:00
Stenzek dd7fd32501
Controller: Add GetVibrationMotorState() 2025-01-13 16:49:14 +10:00
Stenzek aaf2a4b614
InputManager: Adjust scope of constants 2025-01-13 16:35:40 +10:00
Stenzek 3476140ba2
GPUThread: Add BeginASyncBufferCall() 2025-01-13 16:08:20 +10:00
Stenzek 462a4a3b50
Controller: Refactor so that GetControllerInfo() can't return null 2025-01-13 16:07:43 +10:00
Stenzek 062776c1c7
ImGuiManager: Map left stick to dpad 2025-01-13 14:28:39 +10:00
Stenzek c45e59fe22
SDLInputSource: Arrays to std::array and forward generic axis 2025-01-13 14:28:28 +10:00
Stenzek 21aef088ed
XInputSource: Arrays to std::array and forward generic axis 2025-01-13 14:25:51 +10:00
Stenzek 9d3c56fe6c
ImGuiManager: Fix data races in input forwarding 2025-01-13 13:52:07 +10:00
Stenzek 17e8930e94
ImGuiManager: Pack state based on thread access 2025-01-13 13:33:15 +10:00
Stenzek 3621705933
Achievements: Ensure loading old states behave the same as new 2025-01-13 13:13:15 +10:00
Stenzek 8f39dbb464
Achievements: Fix race condition invalidating images 2025-01-13 13:03:41 +10:00
Stenzek 2f854de9d0
Qt: Invalidate FSUI cover cache when cover changed 2025-01-13 12:54:18 +10:00
Stenzek 738c96ffb3
FullscreenUI: Fix slot disappearing after delete in save state menu 2025-01-13 12:44:11 +10:00
Stenzek ea82dacb0e
FullscreenUI: Fix a couple of GPU thread race conditions
State saving/loading, memory card state read on shutdown.
2025-01-13 12:44:06 +10:00
Stenzek a422e06628
Qt: Fix incorrect InitialSortOrderRole use 2025-01-12 21:44:05 +10:00
Stenzek d3ee12d358
Achievements: Login error notification should be translatable 2025-01-12 19:16:22 +10:00
Stenzek 19ee37cd10
FullscreenUI: Render notifications on top of OSD 2025-01-12 19:14:59 +10:00
Stenzek 035762af94
System: Fix subimage change OSD message 2025-01-12 19:03:53 +10:00
Stenzek be7cff5964
CDROM: Fix loading of subimage SBI files 2025-01-12 19:03:48 +10:00
Stenzek e4dea69713
System: Drop state load OSD duration to quick 2025-01-12 17:50:33 +10:00
Stenzek e43d7046ba
Achievements: Attempt relogin on system boot
And display an error notification if login fails, instead of
invalidating the token.
2025-01-12 17:50:33 +10:00
Stenzek 0f76543685
Achivements: Set rc_client log level from host log level 2025-01-12 16:54:58 +10:00
Stenzek ce0689687c
Qt: Fix editing first controller preset 2025-01-12 02:09:55 +10:00
Stenzek c43533f8d8
FullscreenUI: Extend achievement overlays to screen margins
Fixes overlays getting caught in rounded corners on Android.
2025-01-12 01:02:58 +10:00
Stenzek ab790ed54b
Common: Fix ARM32 build (again) 2025-01-12 00:25:48 +10:00
Stenzek ee1da343ab
GPU/HW: Use default initialization for BatchConfig
Reduce the risk of below...
2025-01-12 00:03:45 +10:00
Stenzek 9779cee934
GPU/HW: Ensure texture window bits are initialized
Fixes broken rendering after loading state or switching renderer in some
games, e.g. GTA2.
2025-01-12 00:03:18 +10:00
Stenzek 9c35b0e76d
FullscreenUI: Get rid of Timer global 2025-01-11 23:32:21 +10:00
Stenzek 36590f3c71
InputManager: Fix crash on controller connect on Windows 2025-01-11 23:29:55 +10:00
Stenzek 6785285f31
Qt: Fix game list toolbar/view menu desync 2025-01-11 23:29:40 +10:00
Stenzek 54780d4fbf
Qt: Fix fullscreen state stuck after exit 2025-01-11 21:37:39 +10:00
Stenzek 348e33562e
Qt: Fix BP start/stop menu item after first activation 2025-01-11 21:34:20 +10:00
Stenzek 234e1f721f
FullscreenUI: Improve controller settings page
- Add 'Clear Bindings' menu item.
- Show icons in controller types.
- Add confirmation to Reset Settings.
2025-01-11 21:29:04 +10:00
Stenzek d6ce322eba
Controller: Use additional icons 2025-01-11 20:51:16 +10:00
Stenzek e6c0725656
InputManager: Hold lock while manipulating devices/sources
Since we're enumerating on the GPU thread now, need to protect it.
2025-01-11 20:28:00 +10:00
Stenzek d3bee3ce67
Qt: Rename 'Input Profile' to 'Controller Preset'
Hopefully more noob-proof?
2025-01-11 20:25:12 +10:00
Stenzek e4c11aa905
Qt: Separate controller settings to global and profiles 2025-01-11 20:25:11 +10:00
Stenzek 2d63b34d48
Qt: Add icons/decorations to input devices 2025-01-11 20:25:11 +10:00
Stenzek 2298227054
FullscreenUI: Add binding of vibration motors 2025-01-11 20:25:11 +10:00
Stenzek 6f9caa6b12
InputManager: Add proper binds for vibration motors
Instead of the janky "vibration capabilities" flag.

Fixes the "Clear Mappings" button not applying to vibration motors.
2025-01-11 20:25:11 +10:00
Stenzek 13b85728a0
Qt: Refactor input device/motor tracking
Remove multiple sources of truth.
2025-01-11 20:25:11 +10:00
Stenzek 844287b722
FullscreenUI: Fix scrollbar on choice dialog at some screen sizes
e.g. game list right click
2025-01-11 20:25:11 +10:00
Stenzek 4b0bb9f70d
FullscreenUI: Increase input dialog padding
Way too small.
2025-01-11 20:13:53 +10:00
Stenzek 4af5e96ff6
Controller: Remove analog-mode-start OSD message
It's arguably not very useful, and the sticks are mapped to the
dpad in digital mode anyway.
2025-01-11 15:15:01 +10:00
Stenzek 440aaf2644
FullscreenUI: Modernize achievement popup a bit 2025-01-11 15:07:17 +10:00
Stenzek 05b0b03fd6
Cheats: Order special characters before alpha characters 2025-01-11 12:51:33 +10:00
Stenzek 93a7e7cef5
Cheats: Add bounds check to 5107/5147 2025-01-11 12:40:46 +10:00
Anderson Cardoso c98dbb9d9e
Atualização Português do Brasil (#3353)
Atualizado para a última versão.
2025-01-11 12:37:16 +10:00
PugsyMAME a26cac18e9
Cheats: Added register cheat types 5107 & 5147 (#3352)
This is new cheat type uses the general purpose cheat registers in a relative easy method to allow arrays of arrays cheats to be quickly created and will also cut down massively on cheats. For instance this method allows the following 15 cheats for Vandal Hearts II which would otherwise need 18886 separate cheats to replicate:

#Technique Slot Modifier\[MASTER] Select Slot Number for following cheats to act on (1 - 1349)
518500F1 001CF3C3
514500F2 0000000F
514500F3 0000????
514500F4 0000D0D0
OptionRange = 1:1349
#Technique Slot Modifier\Select Weapon
510700F1 000000??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 1 Learned
510700F1 00020001
#Technique Slot Modifier\Select Technique 1
510700F1 000300??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 2 Learned
510700F1 00040001
#Technique Slot Modifier\Select Technique 2
510700F1 000500??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 3 Learned
510700F1 00060001
#Technique Slot Modifier\Select Technique 3
510700F1 000700??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 4 Learned
510700F1 00080001
#Technique Slot Modifier\Select Technique 4
510700F1 000900??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 5 Learned
510700F1 000A0001
#Technique Slot Modifier\Select Technique 5
510700F1 000B00??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\Technique 6 Learned
510700F1 000C0001
#Technique Slot Modifier\Select Technique 6
510700F1 000D00??
OptionRange = 0x00:0xFF
#Technique Slot Modifier\100% (Max) Technique Learned
510700F1 000E0064
2025-01-11 12:37:03 +10:00
Stenzek ee33044f3d
InputManager: Fix SDL sub-options not copying to profile 2025-01-10 20:42:17 +10:00
Stenzek 7ac4a85765
InputManager: Fix per-bind sensitivity/deadzone not copying to profile 2025-01-10 20:14:21 +10:00
Stenzek ccfc60ec94
GPU/HW: Remove extra barrier on VRAM download
Seems to work around download texture corruption on AMD/Vulkan/Windows.
2025-01-10 20:06:56 +10:00
Stenzek 18c90718c6
GPU/SW: Skip pixel load if none preserved
~12% performance improvement on Cortex-A35.
2025-01-10 18:46:05 +10:00
Stenzek 1320d9b456
Common: Use __builtin_shufflevector() for NEON blend() 2025-01-10 17:12:45 +10:00
Stenzek 29934d62c4
System: Improve rewind behaviour
- Fix crash when rewinding before first state is saved.
- Always save a rewind state immediately after normal save state load.
- Don't toss the last rewind state when rewinding, that way there is
  always at least one state to rewind to.
2025-01-09 23:46:06 +10:00
Stenzek d25cffebd5
GPU/HW: Disable depth testing with semitransparency
But provide an option to enable it.
2025-01-09 21:45:14 +10:00
Stenzek d9c9b3038d
GPU/HW: Fix ROV depth being written with semitransparency 2025-01-09 21:21:12 +10:00
Stenzek 7d2898b94c
GPU/HW: Exclude 2D polygons from depth buffer
Fixes UI getting obscured in Kingsley's Adventure.
2025-01-09 21:21:12 +10:00
Stenzek 1c9b9ca37a
GPUThread: Restore context after backend creation
Might help with random VRAM loss? I can't seem to reproduce it now..
2025-01-09 21:21:12 +10:00
Stenzek 40589dcd93
Settings: Add advanced option to set delay for max CD speedup
Affects both seeks and reads.
2025-01-09 21:21:12 +10:00
Stenzek 4449ae7904
Settings: Rearrange fields to avoid padding 2025-01-09 21:21:12 +10:00
Stenzek 9b339d4bff
PostProcessing: Remove StageCount key for game settings
Potentially removes the ini file if it's otherwise empty.
2025-01-09 21:21:12 +10:00
Stenzek 2b4e60a5bf
FullscreenUI: Fix loading screen font 2025-01-09 21:21:12 +10:00
Stenzek bed3dd6950
FullscreenUI: Use span for DrawIntListSetting() 2025-01-09 17:54:12 +10:00
Stenzek b76ebd2a7b
FullscreenUI: Fix scrollbar rounding in choice dialogs 2025-01-09 17:53:52 +10:00
Stenzek 561397a53c
CDROM: Add 'maximum' read speedup option
"Instant" seek is now renamed to Maximum as well, for consistency.
2025-01-09 15:23:47 +10:00
Anderson Cardoso 0ad0859e9d
Atualização Português do Brasil (#3351)
Atualizado para a última versão
2025-01-09 15:23:25 +10:00
Stenzek fc8fbd8f08
Qt: Disable shared memcard settings outside of shared mode 2025-01-08 16:36:05 +10:00
Stenzek 08a3c31bff
CMake: Fix scmversion PRE_BUILD warning 2025-01-08 15:34:21 +10:00
Stenzek 87743c776d
FullscreenUI: Fix crash reloading postfx shaders 2025-01-08 15:29:56 +10:00
Stenzek 45afc8f7b1
OpenGLDevice: Add map-based stream buffer paths
MapAndSync ends up around 25% faster on ancient Mali drivers without
ARB_buffer_storage support.
2025-01-08 14:14:06 +10:00
Stenzek 1daa60c64d
GPU: Use tristrips for presentation as well 2025-01-08 00:14:15 +10:00