Wayland on FreeBSD

Frederic Chardon chardon.frederic at gmail.com
Mon Apr 20 20:16:22 UTC 2020


Le lun. 20 avr. 2020 à 20:54, Jan Beich <jbeich at freebsd.org> a écrit :
>
> Frederic Chardon <chardon.frederic at gmail.com> writes:
>
> > Le lun. 20 avr. 2020 à 15:20, Jan Beich <jbeich at freebsd.org> a écrit :
> >
> >>
> >> Frederic Chardon <chardon.frederic at gmail.com> writes:
> >>
> >> > Le lun. 20 avr. 2020 à 12:20, Niclas Zeising
> >> > <zeising+freebsd at daemonic.se> a écrit :
> >> >
> >> >>
> >> >> On 2020-04-20 12:07, Greg V wrote:
> >> >> > Apr 20, 2020 12:56:35 PM Frederic Chardon <chardon.frederic at gmail.com>:
> >> >> >
> >> >> >> Le dim. 19 avr. 2020 à 13:50, Jan Beich <jbeich at freebsd.org> a écrit :
> >> >> >>
> >> >> >>>
> >> >> >>>
> >> >> >>> I'm using Sway myself primarily with X11 applications. For example,
> >> >> >>> "vblank_mode=0 glxgears" shows 3x more FPS than on real Xorg server. ;)
> >> >> >>>
> >> >> >>
> >> >> >> I decided to give it a try, is hardware acceleration supposed to work?
> >> >> >> glxgears gives 10x less fps than with X, and 3D is incredibly
> >> >> >> sluggish.
> >> >> >> eglinfo output that leads me to believe it is not:
> >> >> >> GBM platform:
> >> >> >> i965_dri.so does not support the 0xffffffff PCI ID.
> >> >> >>
> >> >> >> It is with sway, -current from yesterday, intel HD4000 iGPU (Ivybridge i5-3320M)
> >> >> >> no difference between drm-devel-kmod or drm-current-kmod.
> >> >> >
> >> >> > Sway itself wouldn't even start without hardware rendering, it doesn't *have* a software renderer.
> >> >> >
> >> >> > For the X applications like glxgears, I guess with the mesa build
> >> >> > that's in official ports currently you still need that DRI3
> >> >> > something environment variable..
> >> >>
> >> >> You shouldn't need that one.  We switched the default to use DRI3 not
> >> >> long after xorg-server was updated to 1.20.
> >> >> https://svnweb.freebsd.org/ports?view=revision&revision=528071
> >> >> It should also be in the latest quarterly branch.
> >> >> Regards
> >> >> --
> >> >> Niclas
> >> >
> >> > With or without LIBGL_DRI3_ENABLE=1 in the environment the result is
> >> > the same. I use official packages, updated yesterday.
> >> >
> >> > The problem I face might be due to permission issue. ktrace shows this:
> >> > 28047 eglinfo  CALL  openat(AT_FDCWD,0x7fffffffc820,0x100002<O_RDWR|O_CLOEXEC>)
> >> > 28047 eglinfo  NAMI  "/dev/dri/card0"
> >> > 28047 eglinfo  RET   openat 3
> >> > /..../
> >> > 28047 eglinfo  CALL  ioctl(0x3,0xc0106446,0x7fffffffbc70)
> >> > 28047 eglinfo  RET   ioctl -1 errno 13 Permission denied
> >>
> >> What initializes DRI3 is Xwayland which is started by Sway. DRI3 can
> >> fail for weird reasons (e.g., bug 241821), so make sure you have
> >>
> >> https://reviews.freebsd.org/D23846
> >>
> >> As graphics/mesa-demos doesn't install eglgears_wayland to check OpenGL
> >> acceleration in native Wayland clients try multimedia/mpv instead e.g.,
> >>
> >>   $ pkg install mpv
> >>   $ mpv --no-config --msg-level=vo/gpu=v --gpu-api=opengl --gpu-context=wayland /path/to/foo.mp4
> >
> > Thanks, I'm at r360105 so this fix is included. mpv doesn't output any error.
>
> What does mpv show as GL_RENDERER? If not llvmpipe (or swrast) then
> hardware acceleration in native Wayland clients works fine for you.

[vo/gpu/wayland] GL_RENDERER='Mesa DRI Intel(R) Ivybridge Mobile '

>
> > I installed benchmarks/glmark2, it scores an average of 8 times less
> > fps under wayland than X11. So wayland in general works, but OpenGL is
> > slow. Is it expected?
>
> glmark2 doesn't seem to support Wayland natively, so like glxgears it
> tests Xwayland support. If Xwayland failed to initialize DRI3 then
> all X11 clients would use slow software rendering.
>
>   $ printenv | fgrep -i display
>   DISPLAY=:0
>   WAYLAND_DISPLAY=wayland-0
>
>   $ env -u DISPLAY glmark2
>   Error: main: Could not initialize canvas
>
>   $ env -u DISPLAY glmark2-es2
>   Error: main: Could not initialize canvas

I have the exact same output for all 3.

>
> Try starting Sway via "ktrace -i" or replace Xwayland binary with a
> wrapper (see below) that starts it via ktrace. Tracing glxgears is too
> late as Mesa will simply give up if DRI3 is not initialized.
>
> # Make sure Xwayland on restart prints "i965_dri.so does not support the 0xffffffff PCI ID."
> $ pkill Xwayland
> $ PATH=$HOME/.local/bin:$PATH
> $ cat ~/.local/bin/Xwayland
> #! /bin/sh
>
> # Exclude current directory from PATH
> PATH=$(IFS=:; for p in $PATH; do case $p in (${0%/*});; (*) echo -n "$p:" ;; esac; done)
>
> # Run the actual app
> exec ktrace -f /tmp/xwayland.$(id -u).ktrace ${0##*/} "$@"

The trace shows usage of llvmpipe after the failed ioctl on
/dev/dri/card0, so as I understand the lack of hardware acceleration
concerns only Xwayland, whereas wayland itself is accelerated ?

I also have this output:
Refusing to try glamor on llvmpipe
EGL setup failed, disabling glamor
Failed to initialize glamor, falling back to sw


More information about the freebsd-questions mailing list