[Mesa-dev] [PATCH] loader/dri3: Use dri3_find_back in loader_dri3_swap_buffers_msc

Michel Dänzer michel at daenzer.net
Wed Jul 12 08:48:24 UTC 2017


On 07/07/17 12:29 PM, Michel Dänzer wrote:
> From: Thomas Hellstrom <thellstrom at vmware.com>
> 
> If the application hasn't done any drawing since the last call, we
> would reuse the same back buffer which was used for the previous swap,
> which may not have completed yet. This could result in various issues
> such as tearing or application hangs.
> 
> In the normal case, the behaviour is unchanged.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97957
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101683
> Cc: mesa-stable at lists.freedesktop.org
> 
> [Michel Dänzer: Make Thomas' fix from bugzilla actually work as
>  intended, write commit log]
> 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
>  src/loader/loader_dri3_helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
> index 493a7f5218..1c93e7a96d 100644
> --- a/src/loader/loader_dri3_helper.c
> +++ b/src/loader/loader_dri3_helper.c
> @@ -640,7 +640,7 @@ loader_dri3_swap_buffers_msc(struct loader_dri3_drawable *draw,
>  
>     draw->vtable->flush_drawable(draw, flush_flags);
>  
> -   back = draw->buffers[LOADER_DRI3_BACK_ID(draw->cur_back)];
> +   back = draw->buffers[dri3_find_back(draw)];
>     if (draw->is_different_gpu && back) {
>        /* Update the linear buffer before presenting the pixmap */
>        draw->ext->image->blitImage(dri_context,
> 

Any comments? Unless there are any objections, I'm planning to push this
tomorrow.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list