ソースを参照

TextureCache: Flush linear textures after finishing rendering.

Fernando Sahmkow 6 年 前
コミット
ed7e965712
1 ファイル変更8 行追加2 行削除
  1. 8 2
      src/video_core/texture_cache/texture_cache.h

+ 8 - 2
src/video_core/texture_cache/texture_cache.h

@@ -233,8 +233,14 @@ public:
 
 
         auto surface_view = GetSurface(gpu_addr, *cpu_addr,
         auto surface_view = GetSurface(gpu_addr, *cpu_addr,
                                        SurfaceParams::CreateForFramebuffer(system, index), true);
                                        SurfaceParams::CreateForFramebuffer(system, index), true);
-        if (render_targets[index].target)
-            render_targets[index].target->MarkAsRenderTarget(false, NO_RT);
+        if (render_targets[index].target) {
+            auto& surface = render_targets[index].target;
+            surface->MarkAsRenderTarget(false, NO_RT);
+            const auto& cr_params = surface->GetSurfaceParams();
+            if (!cr_params.is_tiled) {
+                FlushSurface(surface);
+            }
+        }
         render_targets[index].target = surface_view.first;
         render_targets[index].target = surface_view.first;
         render_targets[index].view = surface_view.second;
         render_targets[index].view = surface_view.second;
         if (render_targets[index].target)
         if (render_targets[index].target)