[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