|
|
@ -99,25 +99,13 @@ void ThreadManager::FlushRegion(VAddr addr, u64 size) { |
|
|
PushCommand(FlushRegionCommand(addr, size)); |
|
|
PushCommand(FlushRegionCommand(addr, size)); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Asynchronous GPU mode
|
|
|
|
|
|
switch (Settings::values.gpu_accuracy.GetValue()) { |
|
|
|
|
|
case Settings::GPUAccuracy::Normal: |
|
|
|
|
|
PushCommand(FlushRegionCommand(addr, size)); |
|
|
|
|
|
break; |
|
|
|
|
|
case Settings::GPUAccuracy::High: |
|
|
|
|
|
// TODO(bunnei): Is this right? Preserving existing behavior for now
|
|
|
|
|
|
break; |
|
|
|
|
|
case Settings::GPUAccuracy::Extreme: { |
|
|
|
|
|
|
|
|
if (!Settings::IsGPULevelExtreme()) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
auto& gpu = system.GPU(); |
|
|
auto& gpu = system.GPU(); |
|
|
u64 fence = gpu.RequestFlush(addr, size); |
|
|
u64 fence = gpu.RequestFlush(addr, size); |
|
|
PushCommand(GPUTickCommand(), true); |
|
|
PushCommand(GPUTickCommand(), true); |
|
|
ASSERT(fence <= gpu.CurrentFlushRequestFence()); |
|
|
ASSERT(fence <= gpu.CurrentFlushRequestFence()); |
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
default: |
|
|
|
|
|
UNIMPLEMENTED_MSG("Unsupported gpu_accuracy {}", Settings::values.gpu_accuracy.GetValue()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void ThreadManager::InvalidateRegion(VAddr addr, u64 size) { |
|
|
void ThreadManager::InvalidateRegion(VAddr addr, u64 size) { |
|
|
|