mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-20 02:53:57 +00:00
feat: add Low GPU Accuracy setting for maximum performance
Implements a new "Low" GPU accuracy level that prioritizes performance over accuracy by aggressively cutting corners in GPU emulation. Changes: - Add GpuAccuracy::Low enum and setting infrastructure - Implement IsGPULevelNormal() helper function - Skip texture cache checks and query operations - Use unsafe memory reads for DMA operations - Disable fence delays and query precision - Add UI support for desktop (Qt) and Android Performance optimizations: - Skips texture cache coherency checks (vk/gl_rasterizer.cpp) - Non-blocking query synchronization (query_cache.h) - Unsafe memory operations (dma_pusher.cpp) - No macro parameter refresh (maxwell_3d.cpp) - Immediate fence signaling (fence_manager.h) - Non-precise Vulkan queries (vk_query_cache.cpp) Ideal for lower-end hardware and users prioritizing FPS over accuracy. Works on both desktop and Android platforms. Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
@@ -3960,14 +3960,21 @@ void GMainWindow::OnToggleDockedMode() {
|
||||
|
||||
void GMainWindow::OnToggleGpuAccuracy() {
|
||||
switch (Settings::values.gpu_accuracy.GetValue()) {
|
||||
case Settings::GpuAccuracy::High: {
|
||||
case Settings::GpuAccuracy::Low: {
|
||||
Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::Normal);
|
||||
break;
|
||||
}
|
||||
case Settings::GpuAccuracy::Normal:
|
||||
case Settings::GpuAccuracy::Normal: {
|
||||
Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::High);
|
||||
break;
|
||||
}
|
||||
case Settings::GpuAccuracy::High: {
|
||||
Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::Low);
|
||||
break;
|
||||
}
|
||||
case Settings::GpuAccuracy::Extreme:
|
||||
default: {
|
||||
Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::High);
|
||||
Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::Normal);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user