Nintendo Switch Emulator
Go to file
cow 6179cc0588 kepler_compute: use safe memory read
If unsafe read is done there can sometimes be corrupt data in the
KeplerCompute::ProcessLaunch qmd structure.

Fixes GPU crashes in 'Princess Peach: Showtime!' when using vulkan
renderer. Requires using "Accuracy Level High" (crashes will still
happen if using "Normal").

Tested on Radeon 6750XT, Linux 6.11.2, Mesa 24.2.5 (RADV driver).

Unsafe read was introduced in 115792158d
"VideoCore: Implement DispatchIndirect"

How did I debug this:
- Used VK_LAYER_KHRONOS_validation which found invalid vkCmdDispatch
  (along with a lot of other noise!)
- Instrumented all calls to vulkan Dispatch(), set breakpoint when
  grid_dim_x > 1024 (an obviously invalid value). Found dispatch came
  from RasterizerVulkan::DispatchCompute().
- Commented out DispatchCompute() entirely, game runs with no crashes
  but some graphics effects are missing.
- Keep going one layer up, observe corrupted `launch_description` in
  KeplerCompute::ProcessLaunch()
- Attempted safe ReadBlock (`which = VideoCommon::CacheType::All`)
  instead of ReadBlockUnsafe in KeplerCompute::ProcessLaunch(), did not
  help
- Go one layer up to DmaPusher. Switch to safe_process(). No more
  corrupt `launch_description`.
2024-12-20 15:24:58 +00:00
.ci Move repos 2024-12-20 15:14:11 +00:00
.github Move repos 2024-12-20 15:14:11 +00:00
.reuse android: Provide debug.keystore for debug and relWithDebInfo builds 2024-01-21 22:08:07 -05:00
CMakeModules Move repos 2024-12-20 15:14:11 +00:00
dist configuration: break up tooltip for 'VRAM Usage Mode' into multiple lines 2024-12-20 15:24:58 +00:00
externals Update Android app dependencies (#52) 2024-12-20 15:24:58 +00:00
hooks chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
LICENSES general: fix trailing whitespace 2024-01-08 09:34:32 -05:00
src kepler_compute: use safe memory read 2024-12-20 15:24:58 +00:00
tools Removed telemetry and anonymized SCM (git) strings 2024-12-20 15:24:57 +00:00
.codespellrc core: refactor emulated cpu core activation 2023-12-04 10:37:16 -05:00
.git-blame-ignore-revs Skip git blame 2023-11-04 18:26:49 +00:00
.gitattributes chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
.gitignore android: Initialize defaults for each orientations 2023-06-14 16:35:58 -04:00
.gitmodules Updated Vulkan stuff for bug fixes and improved hardware compatibility (#21) 2024-12-20 15:24:57 +00:00
CMakeLists.txt option to skip compiling the -cmd executable (#26) 2024-12-20 15:24:58 +00:00
Doxyfile chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
LICENSE.txt chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
README.md Fixed controller UI being cut off at the bottom 2024-12-20 15:24:57 +00:00
vcpkg.json Use fmt 11.0.0 2024-12-20 15:24:57 +00:00


yuzu

yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.
It is written in C++ with portability in mind.

Note

This is an unofficial mirror fork of the original repository.

Development | License

  • Fixed controller UI being cut off at the bottom

Development

Most of the development happens on Codeberg. It's also where our central repository is hosted.

Git history will be rewritten frequently as patches are added and removed from other forks

License

yuzu is licensed under the GPLv3 (or any later version). Refer to the LICENSE.txt file.