Răsfoiți Sursa

Rasterizer: Disable fence managing in synchronous gpu.

Fernando Sahmkow 6 ani în urmă
părinte
comite
e84eb64e51

+ 10 - 0
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -682,10 +682,20 @@ void RasterizerOpenGL::SyncGuestHost() {
 }
 
 void RasterizerOpenGL::SignalFence(GPUVAddr addr, u32 value) {
+    auto& gpu{system.GPU()};
+    if (!gpu.IsAsync()) {
+        auto& memory_manager{gpu.MemoryManager()};
+        memory_manager.Write<u32>(addr, value);
+        return;
+    }
     fence_manager.SignalFence(addr, value);
 }
 
 void RasterizerOpenGL::ReleaseFences() {
+    auto& gpu{system.GPU()};
+    if (!gpu.IsAsync()) {
+        return;
+    }
     fence_manager.WaitPendingFences();
 }
 

+ 1 - 1
src/video_core/texture_cache/texture_cache.h

@@ -252,7 +252,7 @@ public:
             auto& surface = render_targets[index].target;
             surface->MarkAsRenderTarget(false, NO_RT);
             const auto& cr_params = surface->GetSurfaceParams();
-            if (!cr_params.is_tiled) {
+            if (!cr_params.is_tiled && Settings::values.use_asynchronous_gpu_emulation) {
                 AsyncFlushSurface(surface);
             }
         }