<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, May 2, 2018 at 2:35 AM, Michel Dänzer <span dir="ltr"><<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Michel Dänzer <<a href="mailto:michel.daenzer@amd.com">michel.daenzer@amd.com</a>><br>
<br>
And only free no longer needed back buffers there as well.<br>
<br>
We want to stick to the same back buffer throughout a frame, otherwise<br>
we can run into various issues.<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/105906" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/<wbr>105906</a><br>
Fixes: 3160cb86aa92 "egl/x11: Re-allocate buffers if format is suboptimal"<br>
Reported-by: Sergii Romantsov <<a href="mailto:sergii.romantsov@globallogic.com">sergii.romantsov@globallogic.<wbr>com</a>><br>
Tested-by: Eero Tamminen <<a href="mailto:eero.t.tamminen@intel.com">eero.t.tamminen@intel.com</a>><br>
Acked-by: Daniel Stone <<a href="mailto:daniels@collabora.com">daniels@collabora.com</a>><br>
Signed-off-by: Michel Dänzer <<a href="mailto:michel.daenzer@amd.com">michel.daenzer@amd.com</a>><br>
---<br>
 src/loader/loader_dri3_helper.<wbr>c | 19 +++++++++++--------<br>
 1 file changed, 11 insertions(+), 8 deletions(-)<br>
<br>
diff --git a/src/loader/loader_dri3_<wbr>helper.c b/src/loader/loader_dri3_<wbr>helper.c<br>
index 23729f7ecb2..6db8303d26d 100644<br>
--- a/src/loader/loader_dri3_<wbr>helper.c<br>
+++ b/src/loader/loader_dri3_<wbr>helper.c<br>
@@ -420,13 +420,6 @@ dri3_handle_present_event(<wbr>struct loader_dri3_drawable *draw,<br>
<br>
          if (buf && buf->pixmap == ie->pixmap)<br>
             buf->busy = 0;<br>
-<br>
-         if (buf && draw->cur_blit_source != b && !buf->busy &&<br>
-             (buf->reallocate ||<br>
-             (draw->num_back <= b && b < LOADER_DRI3_MAX_BACK))) {<br>
-            dri3_free_render_buffer(draw, buf);<br>
-            draw->buffers[b] = NULL;<br>
-         }<br>
       }<br>
       break;<br>
    }<br>
@@ -559,7 +552,6 @@ dri3_find_back(struct loader_dri3_drawable *draw)<br>
    /* Check whether we need to reuse the current back buffer as new back.<br>
     * In that case, wait until it's not busy anymore.<br>
     */<br>
-   dri3_update_num_back(draw);<br>
    num_to_consider = draw->num_back;<br>
    if (!loader_dri3_have_image_blit(<wbr>draw) && draw->cur_blit_source != -1) {<br>
       num_to_consider = 1;<br>
@@ -1815,6 +1807,7 @@ loader_dri3_get_buffers(__<wbr>DRIdrawable *driDrawable,<br>
 {<br>
    struct loader_dri3_drawable *draw = loaderPrivate;<br>
    struct loader_dri3_buffer   *front, *back;<br>
+   int buf_id;<br>
<br>
    buffers->image_mask = 0;<br>
    buffers->front = NULL;<br>
@@ -1826,6 +1819,16 @@ loader_dri3_get_buffers(__<wbr>DRIdrawable *driDrawable,<br>
    if (!dri3_update_drawable(<wbr>driDrawable, draw))<br>
       return false;<br>
<br>
+   dri3_update_num_back(draw);<br>
+<br>
+   /* Free no longer needed back buffers */<br>
+   for (buf_id = draw->num_back; buf_id < LOADER_DRI3_MAX_BACK; buf_id++) {<br>
+      if (draw->cur_blit_source != buf_id && draw->buffers[buf_id]) {<br>
+         dri3_free_render_buffer(draw, draw->buffers[buf_id]);<br>
+         draw->buffers[buf_id] = NULL;<br>
+      }<br>
+   }<br></blockquote><div><br></div><div>Moving this hear means that dri3_update_num_back is no longer getting called from dri3_find_back_alloc which is used by swapbuffers_msc and copy_sub_buffer.  Is this intended?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
    /* pixmaps always have front buffers.<br>
     * Exchange swaps also mandate fake front buffers.<br>
     */<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.17.0<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>