Browse Source

gpu: Always flush.

nce_cpp
bunnei 7 years ago
parent
commit
fbcb9e6815
  1. 13
      src/video_core/gpu_thread.cpp
  2. 6
      src/video_core/renderer_opengl/gl_rasterizer.cpp

13
src/video_core/gpu_thread.cpp

@ -110,9 +110,8 @@ void ThreadManager::SwapBuffers(
}
void ThreadManager::FlushRegion(VAddr addr, u64 size) {
if (Settings::values.use_accurate_gpu_emulation) {
PushCommand(FlushRegionCommand(addr, size), true, false);
}
// Block the CPU when using accurate emulation
PushCommand(FlushRegionCommand(addr, size), Settings::values.use_accurate_gpu_emulation, false);
}
void ThreadManager::InvalidateRegion(VAddr addr, u64 size) {
@ -120,11 +119,9 @@ void ThreadManager::InvalidateRegion(VAddr addr, u64 size) {
}
void ThreadManager::FlushAndInvalidateRegion(VAddr addr, u64 size) {
if (Settings::values.use_accurate_gpu_emulation) {
PushCommand(FlushAndInvalidateRegionCommand(addr, size), true, false);
} else {
InvalidateRegion(addr, size);
}
// Block the CPU when using accurate emulation
PushCommand(FlushAndInvalidateRegionCommand(addr, size),
Settings::values.use_accurate_gpu_emulation, false);
}
void ThreadManager::PushCommand(CommandData&& command_data, bool wait_for_idle, bool allow_on_cpu) {

6
src/video_core/renderer_opengl/gl_rasterizer.cpp

@ -749,11 +749,7 @@ void RasterizerOpenGL::FlushAll() {}
void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) {
MICROPROFILE_SCOPE(OpenGL_CacheManagement);
if (Settings::values.use_accurate_gpu_emulation) {
// Only flush if use_accurate_gpu_emulation is enabled, as it incurs a performance hit
res_cache.FlushRegion(addr, size);
}
res_cache.FlushRegion(addr, size);
}
void RasterizerOpenGL::InvalidateRegion(VAddr addr, u64 size) {

Loading…
Cancel
Save