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 <[email protected]> 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 <[email protected]>
> >
> > 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 <[email protected]>
> > Signed-off-by: Michel Dänzer <[email protected]>
> > ---
> >  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
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to