[Mesa-dev] [PATCH] wayland/egl: initialize window surface size to window size
Brendan King
brendan.king at imgtec.com
Fri Jun 1 08:39:58 UTC 2018
The IMG patch Eric was referring to was to dEQP. I submitted bug reports
to Google and Khronos:
https://issuetracker.google.com/issues/64059452
https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/594
I've attached the patch to this email. The problem is that the dEQP
*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.
Here is the patch description:
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.
On 01/06/18 09:12, Juan A. Suarez Romero wrote:
> On Thu, 2018-05-31 at 16:57 +0100, Daniel Stone wrote:
>> Hi Juan,
>> Thanks for picking this up!
>>
>> On 31 May 2018 at 16:44, Juan A. Suarez Romero <jasuarez at igalia.com> wrote:
>>> @@ -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;
>> We should definitely not initialise attached_{width,height} here,
>> because no buffer has ever been attached.
>>
>>> @@ -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) {
>> 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.
> Eric explained pretty well the reason to touch attached_{width,height};
> otherwise dEQP-EGL.functional.resize.surface_size.* tests continue to fail.
>
>
> J.A.
>
>
>> So with that initialisation removed, this is (assuming dEQP still passes):
>> Reviewed-by: Daniel Stone <daniels at collabora.com>
>>
>> Cheers,
>> Daniel
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180601/bfabfa97/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-the-deqp-egl-resize.surface_size-for-Wayland.patch
Type: text/x-patch
Size: 5249 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180601/bfabfa97/attachment-0001.bin>
More information about the mesa-dev
mailing list