diff options
| author | MaranBr <maranbr@outlook.com> | 2025-08-23 19:42:10 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2025-08-23 19:42:10 +0200 |
| commit | 5b864d406d44cd786b00ce0a4cec70fc44930652 (patch) | |
| tree | 9fac927346362e6b18843303d7e7b84565cc5024 /src/video_core/dma_pusher.cpp | |
| parent | a51953e4f9f8ec4868c473857a4f297eb7a5e2b8 (diff) | |
[video_core] Add option to control the DMA precision level at runtime (#304)
This adds an option to control the DMA precision level at runtime.
Co-authored-by: crueter <crueter@eden-emu.dev>
Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/304
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
Diffstat (limited to 'src/video_core/dma_pusher.cpp')
| -rw-r--r-- | src/video_core/dma_pusher.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp index 8ea4cbd43a..4b9a506cdf 100644 --- a/src/video_core/dma_pusher.cpp +++ b/src/video_core/dma_pusher.cpp @@ -102,9 +102,18 @@ bool DmaPusher::Step() { ProcessCommands(headers); }; - if (Settings::IsGPULevelExtreme()) { + const Settings::DmaAccuracy accuracy = Settings::values.dma_accuracy.GetValue(); + const bool use_gpu_accuracy = accuracy == Settings::DmaAccuracy::Default; + + // reduces eye bleeding but also macros are dumb so idk +#define CHECK_LEVEL(level) use_gpu_accuracy ? Settings::IsGPULevel##level() : accuracy == Settings::DmaAccuracy::level; + const bool force_safe = CHECK_LEVEL(Extreme) + const bool unsafe_compute = CHECK_LEVEL(High) +#undef CHECK_LEVEL + + if (force_safe) { safe_process(); - } else if (Settings::IsGPULevelHigh()) { + } else if (unsafe_compute) { if (dma_state.method >= MacroRegistersStart) { unsafe_process(); } else { |
