[Mesa-users] Mesa 17 Wayland EGL changes
Cédric Legrand
legrand.cedric.01 at gmail.com
Tue Feb 14 11:58:33 UTC 2017
2017-02-13 15:40 GMT+01:00 Pekka Paalanen <ppaalanen at gmail.com>:
> On Mon, 13 Feb 2017 13:47:05 +0100
> Cédric Legrand <legrand.cedric.01 at gmail.com> wrote:
>
> > 2017-02-13 13:13 GMT+01:00 Pekka Paalanen <ppaalanen at gmail.com>:
> >
> > > On Mon, 13 Feb 2017 12:49:59 +0100
> > > Cédric Legrand <legrand.cedric.01 at gmail.com> wrote:
> > >
> > > > 2017-02-13 12:23 GMT+01:00 Pekka Paalanen <ppaalanen at gmail.com>:
> > > >
> > > > > On Mon, 13 Feb 2017 11:59:01 +0100
> > > > > Cédric Legrand <legrand.cedric.01 at gmail.com> wrote:
> > > > >
> > > > > > Hello,
> > > > > >
> > > > > > I'm working on a Wayland compositor and the latest Mesa update
> broke
> > > my
> > > > > > work. After investigating, I found that I need to use the
> > > > > > EGL_WL_wayland_bind_display extension, otherwise my compositor
> > > crashes
> > > > > with
> > > > > > wl_shm reporting an invalid format. I'm not an OpenGL expert,
> but I
> > > spent
> > > > > > the last few days reading documentation, inspecting weston's
> source
> > > code
> > > > > > and googling with no luck.
> > > > > >
> > > > > > Question 1: Is it necessary to have the extension? Why don't Mesa
> > > support
> > > > > > plain old wl_shm anymore? Unless I missed something, this means
> we
> > > can't
> > > > > > use OpenGL anymore for software rendering in Wayland, am I right?
> > > > >
> > > > > Hi,
> > > > >
> > > > > that sounds like a new bug in Mesa, but what is this "invalid
> format"
> > > > > error you mention?
> > > >
> > > >
> > > > Sorry, I was a little vague on this one. The error is the wl_shm
> protocol
> > > > error:
> > > > -> wl_display at 1.error(wl_shm_pool at 14, 0, "invalid format
> 0x34325258")
> > > >
> > > > I inspected Mesa code and it seems that it is asking for a
> > > WL_DRM_FORMAT_*
> > > > buffer, independently from the availability of the wl_drm interface.
> > > There
> > > > is no instance of WL_SHM_FORMAT_* in its source code. Of course,
> without
> > > > the interface, the server wl_shm knows nothing about these formats
> and
> > > > throws the error.
> > >
> > > The WL_SHM and WL_DRM formats are identical, except for two very
> > > unfortunate differences: argb8888 and xrgb8888 - the two formats that
> > > are required to be supported by the compositor and are most used.
> > >
> > > Hence most DRM formats are valid and correct also as wl_shm formats (by
> > > design), except the ones that are most popular (by historical
> accident).
> > >
> >
> > My system is using ARGB8888. If I got everything correctly, this means
> that
> > Mesa should fallback to WL_SHM_FORMAT_ARGB8888 when wl_drm is not
> > available, right? Or should the compositor have to support
> > WL_DRM_FORMAT_[XA]RGB8888 (even if this is implementation specific)?
>
> That is a very good question.
>
> I am looking at some 12.0 branch of Mesa, and it clearly has:
>
> src/egl/drivers/dri2/platform_wayland.c=1245=dri2_wl_swrast_get_stride_for_format(int
> format, int w)
> src/egl/drivers/dri2/platform_wayland.c:1247: if (format ==
> WL_SHM_FORMAT_RGB565)
> src/egl/drivers/dri2/platform_wayland.c=1667=dri2_wl_swrast_
> create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
> src/egl/drivers/dri2/platform_wayland.c:1689: dri2_surf->format =
> WL_SHM_FORMAT_RGB565;
> src/egl/drivers/dri2/platform_wayland.c:1691: dri2_surf->format =
> WL_SHM_FORMAT_XRGB8888;
> src/egl/drivers/dri2/platform_wayland.c:1693: dri2_surf->format =
> WL_SHM_FORMAT_ARGB8888;
> src/egl/drivers/dri2/platform_wayland.c=1735=shm_handle_format(void
> *data, struct wl_shm *shm, uint32_t format)
> src/egl/drivers/dri2/platform_wayland.c:1740: case
> WL_SHM_FORMAT_ARGB8888:
> src/egl/drivers/dri2/platform_wayland.c:1743: case
> WL_SHM_FORMAT_XRGB8888:
> src/egl/drivers/dri2/platform_wayland.c:1746: case WL_SHM_FORMAT_RGB565:
>
>
> OTOH I could not find any code in Weston to handle wl_shm formats
> 'XR24' (xrgb8888) or 'AR24' (argb8888), so I do not think compositors
> are expected to handle them without advertising.
>
> Commit cb5e799448c959fa9f0d7ea76999ac6f8c0ad88e in Mesa seems to have
> dropped the format special-casing.
>
> I'll put this info also in the bug
> https://bugs.freedesktop.org/show_bug.cgi?id=99791 you opened.
>
Thank you Pekka for helping me with this issue, Daniel's patch (from
https://lists.freedesktop.org/archives/mesa-dev/2017-February/144133.html)
works as expected and it brings back my work alive.
I'm still unable to get hardware acceleration with the
EGL_WL_bind_wayland_display extension working (question 3). I'm pretty sure
I missed a little stupid detail, but I can't get what exactly. If someone
could at least point me to a typical workflow, this may help me.
Thanks,
Cédric Legrand
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-users/attachments/20170214/31546baf/attachment-0001.html>
More information about the mesa-users
mailing list