<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-02-13 15:40 GMT+01:00 Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Mon, 13 Feb 2017 13:47:05 +0100<br>
Cédric Legrand <<a href="mailto:legrand.cedric.01@gmail.com">legrand.cedric.01@gmail.com</a>> wrote:<br>
<br>
> 2017-02-13 13:13 GMT+01:00 Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>>:<br>
><br>
</span><div><div class="gmail-h5">> > On Mon, 13 Feb 2017 12:49:59 +0100<br>
> > Cédric Legrand <<a href="mailto:legrand.cedric.01@gmail.com">legrand.cedric.01@gmail.com</a>> wrote:<br>
> ><br>
> > > 2017-02-13 12:23 GMT+01:00 Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>>:<br>
> > ><br>
> > > > On Mon, 13 Feb 2017 11:59:01 +0100<br>
> > > > Cédric Legrand <<a href="mailto:legrand.cedric.01@gmail.com">legrand.cedric.01@gmail.com</a>> wrote:<br>
> > > ><br>
> > > > > Hello,<br>
> > > > ><br>
> > > > > I'm working on a Wayland compositor and the latest Mesa update broke<br>
> > my<br>
> > > > > work. After investigating, I found that I need to use the<br>
> > > > > EGL_WL_wayland_bind_display extension, otherwise my compositor<br>
> > crashes<br>
> > > > with<br>
> > > > > wl_shm reporting an invalid format. I'm not an OpenGL expert, but I<br>
> > spent<br>
> > > > > the last few days reading documentation, inspecting weston's source<br>
> > code<br>
> > > > > and googling with no luck.<br>
> > > > ><br>
> > > > > Question 1: Is it necessary to have the extension? Why don't Mesa<br>
> > support<br>
> > > > > plain old wl_shm anymore? Unless I missed something, this means we<br>
> > can't<br>
> > > > > use OpenGL anymore for software rendering in Wayland, am I right?<br>
> > > ><br>
> > > > Hi,<br>
> > > ><br>
> > > > that sounds like a new bug in Mesa, but what is this "invalid format"<br>
> > > > error you mention?<br>
> > ><br>
> > ><br>
> > > Sorry, I was a little vague on this one. The error is the wl_shm protocol<br>
> > > error:<br>
> > >  -> wl_display@1.error(wl_shm_<wbr>pool@14, 0, "invalid format 0x34325258")<br>
> > ><br>
> > > I inspected Mesa code and it seems that it is asking for a<br>
> > WL_DRM_FORMAT_*<br>
> > > buffer, independently from the availability of the wl_drm interface.<br>
> > There<br>
> > > is no instance of WL_SHM_FORMAT_* in its source code. Of course, without<br>
> > > the interface, the server wl_shm knows nothing about these formats and<br>
> > > throws the error.<br>
> ><br>
> > The WL_SHM and WL_DRM formats are identical, except for two very<br>
> > unfortunate differences: argb8888 and xrgb8888 - the two formats that<br>
> > are required to be supported by the compositor and are most used.<br>
> ><br>
> > Hence most DRM formats are valid and correct also as wl_shm formats (by<br>
> > design), except the ones that are most popular (by historical accident).<br>
> ><br>
><br>
> My system is using ARGB8888. If I got everything correctly, this means that<br>
> Mesa should fallback to WL_SHM_FORMAT_ARGB8888 when wl_drm is not<br>
> available, right? Or should the compositor have to support<br>
> WL_DRM_FORMAT_[XA]RGB8888 (even if this is implementation specific)?<br>
<br>
</div></div>That is a very good question.<br>
<br>
I am looking at some 12.0 branch of Mesa, and it clearly has:<br>
<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c=1245=dri2_wl_swrast_<wbr>get_stride_for_format(int format, int w)<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1247:   if (format == WL_SHM_FORMAT_RGB565)<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c=1667=dri2_wl_swrast_<wbr>create_window_surface(_<wbr>EGLDriver *drv, _EGLDisplay *disp,<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1689:      dri2_surf->format = WL_SHM_FORMAT_RGB565;<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1691:      dri2_surf->format = WL_SHM_FORMAT_XRGB8888;<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1693:      dri2_surf->format = WL_SHM_FORMAT_ARGB8888;<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c=1735=shm_handle_<wbr>format(void *data, struct wl_shm *shm, uint32_t format)<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1740:   case WL_SHM_FORMAT_ARGB8888:<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1743:   case WL_SHM_FORMAT_XRGB8888:<br>
src/egl/drivers/dri2/platform_<wbr>wayland.c:1746:   case WL_SHM_FORMAT_RGB565:<br>
<br>
<br>
OTOH I could not find any code in Weston to handle wl_shm formats<br>
'XR24' (xrgb8888) or 'AR24' (argb8888), so I do not think compositors<br>
are expected to handle them without advertising.<br>
<br>
Commit cb5e799448c959fa9f0d7ea76999ac<wbr>6f8c0ad88e in Mesa seems to have<br>
dropped the format special-casing.<br>
<br>
I'll put this info also in the bug<br>
<a href="https://bugs.freedesktop.org/show_bug.cgi?id=99791" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/<wbr>show_bug.cgi?id=99791</a> you opened.<br></blockquote><div> <br></div><div> Thank you Pekka for helping me with this issue, Daniel's patch (from <a href="https://lists.freedesktop.org/archives/mesa-dev/2017-February/144133.html">https://lists.freedesktop.org/archives/mesa-dev/2017-February/144133.html</a>) works as expected and it brings back my work alive.<br><br></div><div>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.<br><br></div><div>Thanks,<br></div><div>Cédric Legrand<br></div></div></div></div>