mirror of
https://git.eden-emu.dev/archive/citron
synced 2026-03-28 20:39:33 -04: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:
@@ -98,7 +98,8 @@ bool DmaPusher::Step() {
|
||||
&command_headers);
|
||||
ProcessCommands(headers);
|
||||
};
|
||||
if (Settings::IsGPULevelHigh()) {
|
||||
if (Settings::IsGPULevelNormal()) {
|
||||
// Normal/High/Extreme: Use safe reads for most operations
|
||||
if (dma_state.method >= MacroRegistersStart) {
|
||||
unsafe_process();
|
||||
return true;
|
||||
@@ -106,6 +107,10 @@ bool DmaPusher::Step() {
|
||||
safe_process();
|
||||
return true;
|
||||
}
|
||||
// Low accuracy: Use unsafe reads for maximum performance everywhere
|
||||
unsafe_process();
|
||||
return true;
|
||||
// Note: The code below is unreachable for Low, but kept for reference
|
||||
// Even in normal accuracy, use safe reads for KeplerCompute inline methods
|
||||
if (subchannel_type[dma_state.subchannel] == Engines::EngineTypes::KeplerCompute &&
|
||||
dma_state.method == ComputeInline) {
|
||||
|
||||
Reference in New Issue
Block a user