SDL: PS2: Blank both physical framebuffers on renderer init

From ea7a2dabfd1ab6b0a5720568ffd207f5825e47f1 Mon Sep 17 00:00:00 2001
From: Ifcaro <[EMAIL REDACTED]>
Date: Thu, 1 Oct 2026 18:18:40 +0200
Subject: [PATCH] PS2: Blank both physical framebuffers on renderer init

gsKit_vram_clear() only resets gsKit's VRAM allocator, it never
zeroes physical VRAM - and gsKit_init_screen() already turned PCRTC
on pointing at whatever was there before (previous app's framebuffer,
power-on garbage). A single clear+flip only ever cleans the buffer
not currently on screen. Flip twice right after enabling the display
so both physical buffers are black before anything can see either of
them.
---
 src/render/ps2/SDL_render_ps2.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/render/ps2/SDL_render_ps2.c b/src/render/ps2/SDL_render_ps2.c
index 6bf99cd3c4be3..c469b24891ecd 100644
--- a/src/render/ps2/SDL_render_ps2.c
+++ b/src/render/ps2/SDL_render_ps2.c
@@ -737,7 +737,18 @@ static bool PS2_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_P
 
     gsKit_mode_switch(gsGlobal, GS_ONESHOT);
 
+    // gsKit_vram_clear() doesn't touch physical VRAM - flip twice so both
+    // physical buffers are black before anything can see either of them
+    // (otherwise the previous app's framebuffer/power-on garbage shows
+    // through on whichever buffer the single flip missed).
     gsKit_clear(gsGlobal, GS_BLACK);
+    gsKit_queue_exec(gsGlobal);
+    gsKit_finish();
+    gsKit_flip(gsGlobal);
+    gsKit_clear(gsGlobal, GS_BLACK);
+    gsKit_queue_exec(gsGlobal);
+    gsKit_finish();
+    gsKit_flip(gsGlobal);
 
     data->gsGlobal = gsGlobal;