[CFT]Patch for dri / drm interoperability i386 world / amd64 kernel

Meowthink meowthink at gmail.com
Sat Aug 11 01:25:11 UTC 2012


Hello all,

So long FreeBSD's DRI implementation lacks of i386/amd64
interoperability, as discussed [0] [1]. This breaks wine, linuxulator
etc. drawing using DRI-based OpenGL.
Paul Mackerras et al. actually did that part for Linux implementation,
so I simply translated their work to FreeBSD. Due to my poor
programming skills, there's some limitations:
0. I tried to split compatible codes into separate files, like under
Linux. But as a result of the difference between FreeBSD and Linux,
the code is integrated in a  "#include ...ioc32.c" form which is not
so elegant.
1. For same reason, struct drm_driver_info has to be changed.
2. There should be some assertions if a 64-bit pointer failed to fit
in a 32-bit space. Linux implementation didn't do this either, but
they're guaranteed by user-space ioctl structures. This may result
unstable under heavy load.
3. Technically this could be applied to either drm and drm2 module.
The patch is for drm2 only because I only translated core drm and
intel part.

For wine, my setup is based on David Naylor's wine-fbsd64.patch, with
xorg-dev ports tree. It works well, with minor manual works:
0. Copy /i386chroot/usr/local/lib/dri/i965_drv.so to
/usr/local/lib32/dri/ or somewhere else and setenv LIBGL_DRIVERS_PATH
to there(My suggestion is add the following line in /usr/bin/wine:)
export LIBGL_DRIVERS_PATH="$LOCALBASE/lib32/dri":"$LIBGL_DRIVERS_PATH"
1. Copy /i386chroot/usr/local/lib/libdrm_intel.so,
/i386chroot/usr/local/lib/libpciaccess.so.0 to /usr/local/lib32/
This enables direct rendering of d3d/gl demos under wine on my Intel
SNB platform.

I didn't test using this with linuxulator, as linux base from port
don't have up-to-date libdrm/mesa dri-drivers.

[0] http://lists.freebsd.org/pipermail/freebsd-amd64/2005-August/005818.html
[1] http://forums.freebsd.org/showthread.php?t=24519

Regards,
Meowthink
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-64-bit-kernel-32-bit-world-compatible-wrappers-t.patch
Type: application/octet-stream
Size: 32698 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-x11/attachments/20120811/188a777f/0001-Add-64-bit-kernel-32-bit-world-compatible-wrappers-t.obj


More information about the freebsd-x11 mailing list