No hardware acceleration with Xwayland and i915kms (was: Wayland on FreeBSD)
Frederic Chardon
chardon.frederic at gmail.com
Thu Apr 23 09:49:12 UTC 2020
Le jeu. 23 avr. 2020 à 11:43, Frederic Chardon
<chardon.frederic at gmail.com> a écrit :
>
> Le jeu. 23 avr. 2020 à 11:36, Emmanuel Vadot <manu at bidouilliste.com> a écrit :
> >
> > On Thu, 23 Apr 2020 11:24:37 +0200
> > Frederic Chardon <chardon.frederic at gmail.com> wrote:
> >
> > > Le jeu. 23 avr. 2020 à 00:35, Jan Beich <jbeich at freebsd.org> a écrit :
> > > >
> > > > Frederic Chardon <chardon.frederic at gmail.com> writes:
> > > >
> > > > > Le mer. 22 avr. 2020 à 16:51, Jan Beich <jbeich at freebsd.org> a écrit :
> > > > >
> > > > >>
> > > > >> Frederic Chardon <chardon.frederic at gmail.com> writes:
> > > > >>
> > > > >> > Le lun. 20 avr. 2020 à 23:06, Jan Beich <jbeich at freebsd.org> a écrit :
> > > > >> >
> > > > >> >>
> > > > >> >> Frederic Chardon <chardon.frederic at gmail.com> 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?
> > > > > Yes, hardware acceleration works. eglinfo still complain about invalid
> > > > > 0xffffffff PCI ID though
> > > > >
> > > > >> Does disabling render node help
> > > > >> e.g., chmod 0000 /dev/dri/renderD128 ?
> > > > > No
> > > > >
> > > > > What helps however is to mount the different linux filesystems after
> > > > > i915kms is loaded.
> > > > > eg I added "late" keyword to fstab as below
> > > > > devfs /compat/linux/dev devfs rw,late 0 0
> > > > > fdesc /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0
> > > > > linproc /compat/linux/proc linprocfs rw,late 0 0
> > > > > linsys /compat/linux/sys linsysfs rw,late 0 0
> > > > >
> > > > > without the late keyword, acceleration works if devfs alone is
> > > > > mounted. any other fs (with or without devfs) makes Xwayland use
> > > > > software rendering.
> > > > > As with setuid Xwayland, eglinfo complains about invalid PCI ID.
> > > >
> > > > manu@ fixed major/minor usage upstream. Can you try the following patch?
> > >
> > > No change. major are still different, minor doesn't have the 0x80 bit
> > > set, and hw accel is disabled if I mount linux pseudofs before kldload
> > > i915kms
> >
> > major/minor are irrelevent on FreeBSD, upstream code now don't care
> > about them and should properly detect the node type.
> > I haven't followed the whole thread as it's a typical mailing list
> > thread that switched to troll and unreleated content. Can someone
> > explain what is the problem that you have please ?
> >
>
> Yes, let's fork the thread
>
> System is a recent -current (from last Sunday), intgegrated intel
> HD4000 and drm-devel-kmod
>
> Hardware acceleration works with X11 and native wayland, but not with Xwayland.
>
> With help of Jan I found a weird workaround to mount devfs, fdescfs,
> linprocfs and linsysfs under /compat/linux _after_ i915kms is loaded.
Forgot to re-add some maybe relevant info
- eglinfo complains about an invalid PCI ID (with or without hw accel):
i965_dri.so does not support the 0xffffffff PCI ID.
- some ioctl fails.
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.
More information about the freebsd-x11
mailing list