<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>The IMG patch Eric was referring to was to dEQP. I submitted bug
      reports to Google and Khronos:</p>
    <p><span id="F1822.wrapper" class="fieldWidget stateRteFieldWidget
        roWidget"><span class="F1822 ControlStyle rofld" style=""
          id="F1822"><a
            href="https://issuetracker.google.com/issues/64059452"
            target="_blank">https://issuetracker.google.com/issues/64059452</a></span></span></p>
    <p><span id="F1822.wrapper" class="fieldWidget stateRteFieldWidget
        roWidget"><span class="F1822 ControlStyle rofld" style=""
          id="F1822"><a
            href="https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/594"
            target="_blank">https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/594</a></span></span></p>
    I've attached the patch to this email. The problem is that the dEQP
    <span id="F1822.wrapper" class="fieldWidget stateRteFieldWidget
      roWidget"><span class="F1822 ControlStyle rofld" style=""
        id="F1822">*resize.surface_size* tests check the native window
        dimensions after creating the window, without having called
        eglSwapBuffers, and hence get back a width and height of zero,
        resulting in the tests failing.<br>
        <br>
        Here is the patch description:<br>
      </span></span>
    <pre>The Wayland version of deqp-egl calls wl_egl_window_get_attached_size
to get window dimensions. On Mesa at least, this initially returns a
width and height of zero for a new window. The surface resize tests
check the initial surface size, and fail as a result.

Add a new native window capability, CAPABILITY_INITIAL_SURFACE_SIZE_QUERY,
which is only set if the initial window size can be queried after
creation. If native windows don't have the capability, return the
required size from getNativeSurfaceSize, rather than the size obtained
from the window system.

A parameter has been added to getNativeSurfaceSize, to indicate if
the initial size of a surface is being queried.

Brendan.
</pre>
    <div class="moz-cite-prefix">On 01/06/18 09:12, Juan A. Suarez
      Romero wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:e7942a33db5df3918200f66f165028a274e0345b.camel@igalia.com">
      <pre wrap="">On Thu, 2018-05-31 at 16:57 +0100, Daniel Stone wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">Hi Juan,
Thanks for picking this up!

On 31 May 2018 at 16:44, Juan A. Suarez Romero <a class="moz-txt-link-rfc2396E" href="mailto:jasuarez@igalia.com"><jasuarez@igalia.com></a> wrote:
</pre>
        <blockquote type="cite">
          <pre wrap="">@@ -255,6 +257,12 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
       goto cleanup_surf;
    }

+   dri2_surf->base.Width = window->width;
+   dri2_surf->base.Height = window->height;
+
+   window->attached_width = dri2_surf->base.Width;
+   window->attached_height = dri2_surf->base.Height;
</pre>
        </blockquote>
        <pre wrap="">
We should definitely not initialise attached_{width,height} here,
because no buffer has ever been attached.

</pre>
        <blockquote type="cite">
          <pre wrap="">@@ -574,8 +582,8 @@ update_buffers(struct dri2_egl_surface *dri2_surf)
    struct dri2_egl_display *dri2_dpy =
       dri2_egl_display(dri2_surf->base.Resource.Display);

-   if (dri2_surf->base.Width != dri2_surf->wl_win->width ||
-       dri2_surf->base.Height != dri2_surf->wl_win->height) {
+   if (dri2_surf->wl_win->attached_width != dri2_surf->wl_win->width ||
+       dri2_surf->wl_win->attached_height != dri2_surf->wl_win->height) {

       dri2_wl_release_buffers(dri2_surf);

@@ -1629,8 +1637,8 @@ swrast_update_buffers(struct dri2_egl_surface *dri2_surf)
    if (dri2_surf->back)
       return 0;

-   if (dri2_surf->base.Width != dri2_surf->wl_win->width ||
-       dri2_surf->base.Height != dri2_surf->wl_win->height) {
+   if (dri2_surf->wl_win->attached_width != dri2_surf->wl_win->width ||
+       dri2_surf->wl_win->attached_height != dri2_surf->wl_win->height) {
</pre>
        </blockquote>
        <pre wrap="">
Not initialising attached_{width,height} should not cause any problems
with these checks. By definition there cannot have been any buffers
allocated or attached between creation and the first draw call, so
there are no old buffers to release.
</pre>
      </blockquote>
      <pre wrap="">
Eric explained pretty well the reason to touch attached_{width,height};
otherwise dEQP-EGL.functional.resize.surface_size.* tests continue to fail.


        J.A.


</pre>
      <blockquote type="cite">
        <pre wrap="">
So with that initialisation removed, this is (assuming dEQP still passes):
Reviewed-by: Daniel Stone <a class="moz-txt-link-rfc2396E" href="mailto:daniels@collabora.com"><daniels@collabora.com></a>

Cheers,
Daniel

</pre>
      </blockquote>
      <pre wrap="">_______________________________________________
mesa-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>