From: Marek Olšák Date: Sat, 27 Apr 2019 02:51:33 +0000 (-0400) Subject: st/mesa: don't flush the front buffer if it's a pbuffer X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=181dcf0792f021f9118b25505b71b461d8a83549;p=mesa.git st/mesa: don't flush the front buffer if it's a pbuffer This is the best guess I can make here. Reviewed-by: Emil Velikov --- diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index 5efbd1fa1d2..bee1f6b1366 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -1130,9 +1130,19 @@ st_manager_flush_frontbuffer(struct st_context *st) struct st_framebuffer *stfb = st_ws_framebuffer(st->ctx->DrawBuffer); struct st_renderbuffer *strb = NULL; - if (stfb) - strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_FRONT_LEFT]. - Renderbuffer); + if (!stfb) + return; + + /* If the context uses a doublebuffered visual, but the buffer is + * single-buffered, guess that it's a pbuffer, which doesn't need + * flushing. + */ + if (st->ctx->Visual.doubleBufferMode && + !stfb->Base.Visual.doubleBufferMode) + return; + + strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_FRONT_LEFT]. + Renderbuffer); /* Do we have a front color buffer and has it been drawn to since last * frontbuffer flush?