[Mesa-dev] [PATCH v1] loader/dri3: wait for fences if back-buffer available
Sergii Romantsov
sergii.romantsov at globallogic.com
Mon Oct 1 14:35:02 UTC 2018
Yes, it also works
On Mon, Oct 1, 2018 at 5:24 PM Michel Dänzer <michel at daenzer.net> wrote:
> On 2018-10-01 12:37 p.m., Sergii Romantsov wrote:
> > Kabylake doesn't have such issue, but also it doesn't have
> > a front buffers in that case.
> > Coffelake can be fixed if to wait for fences if it has back-buffer.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108097
> > Fixes: aefac10fecc9 (loader/dri3: Only wait for back buffer fences in
> dri3_get_buffer)
> > CC: Michel Dänzer <michel.daenzer at amd.com>
> > Signed-off-by: Sergii Romantsov <sergii.romantsov at globallogic.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 258678a..e9f59a2 100644
> > --- a/src/loader/loader_dri3_helper.c
> > +++ b/src/loader/loader_dri3_helper.c
> > @@ -1819,7 +1819,7 @@ dri3_get_buffer(__DRIdrawable *driDrawable,
> > draw->buffers[buf_id] = buffer;
> > }
> >
> > - if (buffer_type == loader_dri3_buffer_back)
> > + if (buffer_type == loader_dri3_buffer_back || draw->have_back)
> > dri3_fence_await(draw->conn, draw, buffer);
> >
> > /*
> >
>
> Thanks for the patch, but unfortunately, this re-introduces
> https://bugs.freedesktop.org/106404 . Also, conceptually it's not clear
> why the presence of a back buffer would affect waiting for the fake
> front buffer's fence.
>
>
> Unfortunately, I'm unable to reproduce the problem with radeonsi. Does
> the patch below help by any chance?
>
>
> 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
>
--
Sergii Romantsov
GlobalLogic Inc.
www.globallogic.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181001/eddb76d5/attachment.html>
More information about the mesa-dev
mailing list