yuzu/src/video_core
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
..
buffer_cache general: workarounds for SMMU syncing issues (#12749) 2024-02-27 15:42:15 +01:00
control video_core: make gpu context aware of rendering program 2024-02-26 11:16:14 -05:00
engines vk_rasterizer: flip scissor y on lower left origin mode (#13122) 2024-02-27 15:40:33 +01:00
host1x Using reserve() for optimization inserts, marked unused pair items and minor code refactor 2024-12-20 15:24:58 +00:00
host_shaders renderer: add area sampling scaling method (#57) 2024-12-20 15:24:58 +00:00
macro scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
query_cache Merge pull request #12499 from Kelebek1/time 2024-01-25 14:19:01 -05:00
renderer_null nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
renderer_opengl renderer: add area sampling scaling method (#57) 2024-12-20 15:24:58 +00:00
renderer_vulkan renderer: add area sampling scaling method (#57) 2024-12-20 15:24:58 +00:00
texture_cache mark format functions as const 2024-12-20 15:24:58 +00:00
textures Revert "HACK: Avoid swizzling and reuploading ASTC image every frame" 2023-08-06 14:55:05 -04:00
vulkan_common Vulkan validation error fix. 2024-12-20 15:24:57 +00:00
cache_types.h RasterizerMemory: Add filtering for flushing/invalidation operations. 2023-01-01 16:43:58 -05:00
capture.h nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
cdma_pusher.cpp Port changes from Early Access 2024-12-20 15:24:40 +00:00
cdma_pusher.h Port changes from Early Access 2024-12-20 15:24:40 +00:00
CMakeLists.txt Disabled problematic MSVC warning-to-errors 2024-12-20 15:24:57 +00:00
compatible_formats.cpp renderer_vulkan: Fix some missing view formats 2023-07-01 16:03:35 +03:00
compatible_formats.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
delayed_destruction_ring.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
dirty_flags.cpp Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong. 2022-10-10 20:59:57 +01:00
dirty_flags.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
dma_pusher.cpp kepler_compute: use safe memory read 2024-12-20 15:24:58 +00:00
dma_pusher.h ci: fix new codespell errors 2023-10-02 18:03:05 -04:00
fence_manager.h scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
framebuffer_config.cpp video_core: simplify accelerated surface fetch and crop handling between APIs 2024-01-31 11:27:20 -05:00
framebuffer_config.h nvnflinger/gpu: implement blending 2024-02-09 09:20:53 -05:00
fsr.cpp video_core/opengl: Add FSR upscaling filter to the OpenGL renderer 2023-01-26 21:43:33 +01:00
fsr.h video_core/opengl: Add FSR upscaling filter to the OpenGL renderer 2023-01-26 21:43:33 +01:00
gpu_thread.cpp Port changes from Early Access 2024-12-20 15:24:40 +00:00
gpu_thread.h nvnflinger/gpu: implement layer stack composition 2024-01-31 11:27:21 -05:00
gpu.cpp Port changes from Early Access 2024-12-20 15:24:40 +00:00
gpu.h Port changes from Early Access 2024-12-20 15:24:40 +00:00
guest_memory.h Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
invalidation_accumulator.h BufferBase: Don't ignore GPU pages. 2023-01-05 14:00:10 -05:00
memory_manager.cpp MemoryManager: Reduce the page table size based on last big page address. 2024-02-01 13:00:36 +01:00
memory_manager.h Port changes from Early Access 2024-12-20 15:24:40 +00:00
precompiled_headers.h CMake: Consolidate common PCH headers 2022-11-30 18:30:30 -05:00
present.h gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
pte_kind.h video_core: Implement memory manager page kind 2022-10-17 15:33:29 +08:00
query_cache.h VideoCore: Move Slot Vector to Common 2024-02-04 20:01:47 +01:00
rasterizer_download_area.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
rasterizer_interface.h video_core: simplify accelerated surface fetch and crop handling between APIs 2024-01-31 11:27:20 -05:00
renderer_base.cpp general: Silence -Wshadow{,-uncaptured-local} warnings 2023-07-18 19:31:35 -04:00
renderer_base.h nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
shader_cache.cpp Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
shader_cache.h Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
shader_environment.cpp Fix typos in video_core 2024-01-07 22:44:55 +00:00
shader_environment.h shader_recompiler: use float image operations on load/store when required 2023-12-21 14:34:46 -05:00
shader_notify.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
shader_notify.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
smaa_area_tex.h video_core: Integrate SMAA 2022-12-08 17:17:45 -05:00
smaa_search_tex.h video_core: Integrate SMAA 2022-12-08 17:17:45 -05:00
surface.cpp Better surface logging 2024-12-20 15:24:57 +00:00
surface.h texture_cache: avoid overestimation of ASTC texture sizes 2024-02-11 13:41:13 -05:00
transform_feedback.cpp Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
transform_feedback.h Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
video_core.cpp Removed telemetry and anonymized SCM (git) strings 2024-12-20 15:24:57 +00:00
video_core.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00