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 à 23:06, Jan Beich <[email protected]> a écrit :
>
>>
>> Frederic Chardon <[email protected]> writes:
>>
>> >
>> > 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 ?
>>
>> Yep. Check which ioctls fail then try to reproduce outside of Mesa or
>> hardcode the result. Overriding PCI ID via INTEL_DEVID_OVERRIDE is
>> unlikely to help e.g.,
>
> All below failure occurs only in xwayland, X11 and wayland succeed.
>
> The first failure is with I915_PARAM_CHIPSET_ID. When I hardcode the
> correct ID I get a failure with I915_PARAM_HAS_RELAXED_DATA. When I
> force the result to be true (as with X11 and Wayland), the ioctl
> DRM_I915_GEM_EXECBUFFER2_WR fails with errno EPERM.

Thanks for investigating. Maybe either DRM_AUTH or DRM_RENDER_ALLOW fails.
Does setuid bit on Xwayland binary help? Does disabling render node help
e.g., chmod 0000 /dev/dri/renderD128 ?

  # Before
  $ procstat -f $(pgrep Xway glx) | awk 'FNR == 1 || /dev\/drm/'
    PID COMM                FD T V FLAGS    REF  OFFSET PRO NAME
  46130 glxgears             4 v c rw------   1       0 -   /dev/drm/128
  46022 Xwayland             3 v c rw------   2       0 -   /dev/drm/128
  46022 Xwayland             5 v c rw------   2       0 -   /dev/drm/128
  46022 Xwayland            12 v c rw---n--  13       0 -   /dev/drm/0

  # After (still accelerated)
  $ procstat -f $(pgrep Xway glx) | awk 'FNR == 1 || /dev\/drm/'
    PID COMM                FD T V FLAGS    REF  OFFSET PRO NAME
  46130 glxgears             4 v c rw------   1       0 -   /dev/drm/0

Can you check major number is the same for primary and render nodes?
Also check if render node device type is correct in case something
like https://github.com/intel/libva/pull/292 affects Mesa.

  $ ls -lL /dev/dri
  total 0
  crw-rw----  1 root  video  0x25b Apr 22 13:04 card0
  crw-rw----  1 root  video  0x2db Apr 22 13:04 renderD128

  # Based on major() from /usr/include/sys/types.h
  $ echo $(( (((0x25b >> 32) & 0xffffff00) | ((0x25b >> 8) & 0xff)) ))
  2
  $ echo $(( (((0x2db >> 32) & 0xffffff00) | ((0x2db >> 8) & 0xff)) ))
  2

  # Based on drmGetMinorBase() from graphics/libdrm
  $ echo $(( 0x2db & 0x80 ))
  128

> Should I open an issue on drm-kms github? Or it is more likely a
> problem on mesa side?

In kms-drm but before that try pending updates just in case:

https://github.com/FreeBSDDesktop/kms-drm/pull/217
https://github.com/FreeBSDDesktop/kms-drm/pull/221 # maybe unstable

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235570
https://github.com/myfreeweb/freebsd-ports-dank/tree/lite/graphics/mesa-dev

>
>> https://lists.freebsd.org/pipermail/freebsd-x11/2019-January/022551.html
>>
>> If you still have no clue try playing with sysctls under compat.linuxkpi
>> via /boot/loader.conf.
>
> Any hints which ones are worth a try? How did you solve your issue (as
> it seems to be pretty similar).

Disappeared on its own. In bug 241821 for some time I could reliably
reproduce but not anymore. The issue seems to be vaguely related to the
order hardware is initialized during boot. Unfortunately, bug 241821
didn't document "ls -lL /dev/dri" output but on the mailing list
/dev/dri/renderD128 didn't have 0x80 bit set.
_______________________________________________
[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.