7470 Commits

Author SHA1 Message Date
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 4dd6365a99ee591c136bf2e36ef376013ee17b04, 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 f2720b98dd5c781a0b028968fc7fa166279047b1
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