wgl: Flush frontbuffer when calling swapbuffers on single-buffered fb

Some apps don't look at what kind of PFDthey get, and if they
get a single-buffered one, they only ever call swap and never flush,
so nothing shows up on-screen.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Reviewed-by: Jose Fonseca <jose.fonseca@broadcom.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27512>
This commit is contained in:
Jesse Natalie
2024-02-07 10:54:27 -08:00
committed by Marge Bot
parent b6a2972455
commit 610dcc178a

View File

@@ -730,13 +730,13 @@ wait_swap_interval(struct stw_framebuffer *fb, int interval)
BOOL BOOL
stw_framebuffer_swap_locked(HDC hdc, struct stw_framebuffer *fb) stw_framebuffer_swap_locked(HDC hdc, struct stw_framebuffer *fb)
{ {
struct stw_context *ctx; struct stw_context *ctx = stw_current_context();
if (!(fb->pfi->pfd.dwFlags & PFD_DOUBLEBUFFER)) { if (!(fb->pfi->pfd.dwFlags & PFD_DOUBLEBUFFER)) {
stw_framebuffer_unlock(fb); stw_framebuffer_unlock(fb);
stw_st_flush(ctx->st, fb->drawable, ST_FLUSH_END_OF_FRAME | ST_FLUSH_FRONT);
return true; return true;
} }
ctx = stw_current_context();
if (ctx) { if (ctx) {
if (ctx->hud) { if (ctx->hud) {
/* Display the HUD */ /* Display the HUD */