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

Thomas Hellstrom thellstrom at vmware.com
Thu Aug 3 14:25:25 UTC 2017


Hi, Michel.

Thanks for doing this. Was there a follow-up st/mesa fix to this. I 
remember someone posting about a problem about the new backbuffer always 
being NULL?

/Thomas



On 07/07/2017 05:29 AM, 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,




More information about the mesa-dev mailing list