gpulib: clear fb when display is blanked
[pcsx_rearmed.git] / plugins / gpulib / gpu.c
index ea17237..70847ab 100644 (file)
@@ -333,6 +333,7 @@ static noinline int do_cmd_list_skip(uint32_t *data, int count, int *last_cmd)
   int cmd = 0, pos = 0, len, dummy;
   int skip = 1;
 
+  // XXX: polylines are not properly handled
   while (pos < count && skip) {
     uint32_t *list = data + pos;
     cmd = list[0] >> 24;
@@ -600,7 +601,16 @@ void GPUupdateLace(void)
     flush_cmd_buffer();
   renderer_flush_queues();
 
-  if (gpu.status.blanking || !gpu.state.fb_dirty)
+  if (gpu.status.blanking) {
+    if (!gpu.state.blanked) {
+      vout_blank();
+      gpu.state.blanked = 1;
+      gpu.state.fb_dirty = 1;
+    }
+    return;
+  }
+
+  if (!gpu.state.fb_dirty)
     return;
 
   if (gpu.frameskip.set) {
@@ -614,6 +624,7 @@ void GPUupdateLace(void)
 
   vout_update();
   gpu.state.fb_dirty = 0;
+  gpu.state.blanked = 0;
 }
 
 void GPUvBlank(int is_vblank, int lcf)