From: Kenneth Graunke Date: Thu, 3 Oct 2019 16:11:22 +0000 (-0400) Subject: st/dri: Perform MSAA downsampling for __DRI2_THROTTLE_COPYSUBBUFFER X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=72beda4fb451d35fdda60f015f370c24af114ccf;p=mesa.git st/dri: Perform MSAA downsampling for __DRI2_THROTTLE_COPYSUBBUFFER glXCopySubBufferMESA copies data from the back buffer to the front, so it needs to perform a MSAA downsampling operation just like glXSwapBuffers would. Currently, the CopySubBuffer implementations supply a throttle reason of __DRI2_THROTTLE_SWAPBUFFERS, so they hit this path and work today. But we'd like to avoid swapbuffer throttling in this case, so the next patch will change that reason. Tested-by: Michel Dänzer # DRI3 only Reviewed-by: Michel Dänzer --- diff --git a/src/gallium/state_trackers/dri/dri_drawable.c b/src/gallium/state_trackers/dri/dri_drawable.c index b99d1e9de51..8f5055407cd 100644 --- a/src/gallium/state_trackers/dri/dri_drawable.c +++ b/src/gallium/state_trackers/dri/dri_drawable.c @@ -511,13 +511,15 @@ dri_flush(__DRIcontext *cPriv, struct pipe_context *pipe = st->pipe; if (drawable->stvis.samples > 1 && - reason == __DRI2_THROTTLE_SWAPBUFFER) { + (reason == __DRI2_THROTTLE_SWAPBUFFER || + reason == __DRI2_THROTTLE_COPYSUBBUFFER)) { /* Resolve the MSAA back buffer. */ dri_pipe_blit(st->pipe, drawable->textures[ST_ATTACHMENT_BACK_LEFT], drawable->msaa_textures[ST_ATTACHMENT_BACK_LEFT]); - if (drawable->msaa_textures[ST_ATTACHMENT_FRONT_LEFT] && + if (reason == __DRI2_THROTTLE_SWAPBUFFER && + drawable->msaa_textures[ST_ATTACHMENT_FRONT_LEFT] && drawable->msaa_textures[ST_ATTACHMENT_BACK_LEFT]) { swap_msaa_buffers = true; }