[Mesa-dev] [PATCH] loader/dri3: Also wait for front buffer fence if we triggered it
Mike Lothian
mike at fireburn.co.uk
Thu Oct 11 10:43:00 UTC 2018
Do you think this why I've been seeing lots of weird flashing in Chrome
recently?
I'll test this patch out tonight and give you my tested by if you like
On Thu, 11 Oct 2018 at 09:27 Michel Dänzer <michel at daenzer.net> wrote:
>
> Any feedback? Without negative feedback, I'll push this fix tomorrow.
>
>
> On 2018-10-02 4:44 p.m., Michel Dänzer wrote:
> > From: Michel Dänzer <michel.daenzer at amd.com>
> >
> > In that case, we have to wait for the fence to synchronize with the
> > corresponding drawing we triggered in the X server.
> >
> > Fixes incorrect display with the i965 and some applications, e.g.
>
> BTW, I've locally fixed this to say "the i965 driver".
>
>
> > solvespace.
> >
> > Bugzilla: https://bugs.freedesktop.org/108097
> > Fixes: aefac10fecc9 "loader/dri3: Only wait for back buffer fences in
> > dri3_get_buffer"
> > Tested-by: Sergii Romantsov <sergii.romantsov at globallogic.com>
> > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> > ---
> > src/loader/loader_dri3_helper.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/loader/loader_dri3_helper.c
> b/src/loader/loader_dri3_helper.c
> > index f641a34e6d1..1981b5f0515 100644
> > --- a/src/loader/loader_dri3_helper.c
> > +++ b/src/loader/loader_dri3_helper.c
> > @@ -1736,6 +1736,7 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
> > struct loader_dri3_drawable *draw)
> > {
> > struct loader_dri3_buffer *buffer;
> > + bool fence_await = buffer_type == loader_dri3_buffer_back;
> > int buf_id;
> >
> > if (buffer_type == loader_dri3_buffer_back) {
> > @@ -1791,6 +1792,7 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
> > 0, 0, 0, 0,
> > draw->width, draw->height);
> > dri3_fence_trigger(draw->conn, new_buffer);
> > + fence_await = true;
> > }
> > dri3_free_render_buffer(draw, buffer);
> > } else if (buffer_type == loader_dri3_buffer_front) {
> > @@ -1812,13 +1814,14 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
> > new_buffer->linear_buffer,
> > 0, 0, draw->width,
> draw->height,
> > 0, 0, 0);
> > - }
> > + } else
> > + fence_await = true;
> > }
> > buffer = new_buffer;
> > draw->buffers[buf_id] = buffer;
> > }
> >
> > - if (buffer_type == loader_dri3_buffer_back)
> > + if (fence_await)
> > dri3_fence_await(draw->conn, draw, buffer);
> >
> > /*
> >
>
>
> --
> Earthling Michel Dänzer | http://www.amd.com
> Libre software enthusiast | Mesa and X developer
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181011/910e27a3/attachment.html>
More information about the mesa-dev
mailing list