Browse Source

[gpu_core] Fixed non-async mode in gpu_thread, seems more stable. Doesn't affect default async mode

pull/3419/head
kaulfield 1 month ago
committed by crueter
parent
commit
5fac17f0ac
  1. 9
      src/video_core/gpu_thread.cpp

9
src/video_core/gpu_thread.cpp

@ -88,13 +88,22 @@ void ThreadManager::TickGPU() {
} }
void ThreadManager::InvalidateRegion(DAddr addr, u64 size) { void ThreadManager::InvalidateRegion(DAddr addr, u64 size) {
if (!is_async) {
PushCommand(InvalidateRegionCommand(addr, size));
} else {
rasterizer->OnCacheInvalidation(addr, size); rasterizer->OnCacheInvalidation(addr, size);
} }
}
void ThreadManager::FlushAndInvalidateRegion(DAddr addr, u64 size) { void ThreadManager::FlushAndInvalidateRegion(DAddr addr, u64 size) {
if (!is_async) {
PushCommand(FlushAndInvalidateRegionCommand(addr, size));
PushCommand(InvalidateRegionCommand(addr, size));
} else {
// Skip flush on asynch mode, as FlushAndInvalidateRegion is not used for anything too important // Skip flush on asynch mode, as FlushAndInvalidateRegion is not used for anything too important
rasterizer->OnCacheInvalidation(addr, size); rasterizer->OnCacheInvalidation(addr, size);
} }
}
u64 ThreadManager::PushCommand(CommandData&& command_data, bool block) { u64 ThreadManager::PushCommand(CommandData&& command_data, bool block) {
if (!is_async) { if (!is_async) {

Loading…
Cancel
Save