Re: Wayland on FreeBSD

Jan Beich <[email protected]>
Newsgroups gmane.os.freebsd.devel.x11,gmane.os.freebsd.questions
Message-ID <[email protected]>
Frederic Chardon <[email protected]> writes:

> Le lun. 20 avr. 2020 à 15:20, Jan Beich <[email protected]> a écrit :
>
>>
>> Frederic Chardon <[email protected]> writes:
>>
>> > Le lun. 20 avr. 2020 à 12:20, Niclas Zeising
>> > <[email protected]> a écrit :
>> >
>> >>
>> >> On 2020-04-20 12:07, Greg V wrote:
>> >> > Apr 20, 2020 12:56:35 PM Frederic Chardon <[email protected]>:
>> >> >
>> >> >> Le dim. 19 avr. 2020 à 13:50, Jan Beich <[email protected]> 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.

> 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

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##*/} "$@"
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-x11
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.