mirror of
https://codeberg.org/yuzu-emu/yuzu.git
synced 2025-12-16 12:09:04 +00:00
video_core: Enforce safe memory reads for compute dispatch
- Modify DmaPusher to use safe memory reads when handling compute operations at High GPU accuracy - Prevent potential memory corruption issues that could lead to invalid dispatch parameters - Previously, unsafe reads could result in corrupted launch_description data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch calls - By enforcing safe reads specifically for compute operations, we maintain performance for other GPU tasks while ensuring compute dispatch stability This change requires >= High GPU accuracy level to take effect.
This commit is contained in:
parent
ed96014ce3
commit
8830df1b9f
@ -93,7 +93,17 @@ bool DmaPusher::Step() {
|
||||
ProcessCommands(headers);
|
||||
};
|
||||
|
||||
if (Settings::IsGPULevelHigh() || (dma_state.method >= MacroRegistersStart)) {
|
||||
// Only use unsafe reads for non-compute macro operations
|
||||
if (Settings::IsGPULevelHigh()) {
|
||||
const bool is_compute = (subchannel_type[dma_state.subchannel] ==
|
||||
Engines::EngineTypes::KeplerCompute);
|
||||
|
||||
if (dma_state.method >= MacroRegistersStart && !is_compute) {
|
||||
unsafe_process();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Always use safe reads for compute operations
|
||||
safe_process();
|
||||
return true;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user