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 <mic...@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.daen...@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.romant...@globallogic.com>
> > Signed-off-by: Michel Dänzer <michel.daen...@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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to