Working with the graphical environment on FreeBSD
Contents
This page and all the linked articles presents the status and directions of all the low-level components making FreeBSD usable as a desktop.
This includes:
- X.Org-related ports: xserver, libraries, tools
- Future Wayland-related ports
- Mesa ports: libGL, dri, libglesv2, libEGL, freeglut, libGLU, libGLw, mesa-demos, libosmesa
OpenCL low-level libraries
Userland drivers (ie. xf86-*)
- Input devices detection and configuration
- Kernel-side GPU drivers
However, this doesn't include:
- GNOME, KDE or any other integrated desktop environments
- Image manipulation or drawing applications
Team
Name |
Responsible for |
|
|
|
|
Kernel video drivers |
|
|
|
X.Org-related ports, Mesa ports |
|
X.Org-related ports |
The best way to contact us is:
the freebsd-x11 mailing-list.
#freebsd-xorg IRC channel on EFNet.
We have a blog. We use this blog for:
- upcoming changes
- answers to technical questions
- modifications to the team and how we work
- reports following an event
What have we been doing:
Roadmap
Project |
Comment |
Status |
Blocks on |
Notes |
Ports: Mesa: turn on --enable-glx-tls |
|
WIP |
|
|
Kernel: DRM & drivers: Use the Linux shim |
Reduce the diff with Linux |
WIP |
|
|
X.Org: update xf86-video-intel to pre 3.0 releases |
|
WIP, needs more testing |
|
Version 2.99.917 (git snapshot) is in the xserver-next branch and works on my Sandybridge system (kwm@). Needs xserver 1.18+ |
X.Org: support Glamor |
|
|
Enabled in xorg-server 1.17.2, not enabled in drivers yet, need more testing. |
Required for 2D hw acceleration on recent Radeon GPUs |
X.Org: support usb_id attribute in config:devd |
|
Not started |
|
Requires libusb and pretty complex string parser |
Kernel: DRM & drivers: Update to the newest Linux |
Update to the newest possible version of Linux |
Not started |
Reduce the diff with Linux first |
|
Kernel: DRM & drivers: Add PRIME support |
Used to move buffers between GPUs |
Not started |
|
|
Ports: find a solution for udev |
udev is used by critical components |
On hold |
|
It has been reported that udev will be replaced in the Linux world in the medium term (say, a year). The next solution isn't known yet, maybe something tightly integrated to systemd. |
Mesa: handle udev dependency |
Mesa depends on udev for components used by OpenCL and Wayland |
WIP |
|
Mesa now uses libdevq to replace udev functions. This has allowed to build libgbm, drm egl platform, and the first OpenCL tests are working. |
Ports: libevdev and libinput |
|
|
|
evdev GSoC will help with this |
Ports: Make port for Wayland |
Xorg replacement |
WIP |
Experimental port made, but completly untested because there isn't anything that can use it yet. Probably Weston at first |
Overview about Wayland status. |
Ports: Make port for Weston |
|
WIP |
Dependency to udev and libinput |
Weston is a composer reference implementation of wayland. |
Ports: DRI3 support |
Information about what needs to be done for DRI3 to work. |
Not started |
Needs PRIME support in kernel |
|
Ports: Xorg-server update to 1.18 |
Update the xorg-server to 1.18 |
Finished (xserver-next branch) |
See blocker table below. |
|
Xserver 1.18 blockers (please note that these ports are not maintained by the graphics team):
Port |
Status |
Notes |
virtualbox |
WIP version available |
Version 4.3.x doesn't support xserver 1.18. Virtualbox 5.x does but isn't available in FreeBSD ports. WIP versions are here: 5.0, 5.0.4, but has locking issues and clock/timer issues with kernel modules. |
nvidia-driver |
Needs update to at least 358.16. |
|
nvidia-driver-304 and nvidia-driver-340 |
|
Need updating to 304.131 and 340.96. |
See the archive for finished project.
Tested hardware matrix
About the tested hardware matrix
The tables below aren't an exhaustive list of hardware supported by FreeBSD, they only show what was actually tested by developers and users. Devices missing from these tables may or may not work on FreeBSD. If you tested a component not listed below, please report how it went by following the instructions below.
Video cards
About GPU codenames vs. marketing names
The entries below are misleading because they use the marketing names as the "key". This table needs to be rewritten using GPU codenames as the key.
If your GPU is not supported
If your GPU is not supported by FreeBSD, you can fallback on VESA (if your computer uses a BIOS) or SCFB (if your computer uses UEFI). For the latter case, you can find instructions to setup SCFB in a dedicated article.
Manufacturer |
Video card family |
State |
Min. FreeBSD version |
Comments |
|
AMD |
Radeon 7000 |
RV100 |
Works |
Any |
See notes: 1 |
AMD |
Radeon 7500 |
RV200 |
Works |
Any |
See notes: 1 |
AMD |
Radeon 9000 |
RV250 |
Works |
Any |
See notes: 1 |
AMD |
Radeon 9200 |
RV280 |
Works |
Any |
See notes: 1 |
AMD |
Radeon 9250 |
RV280 |
Works |
Any |
See notes: 1 |
AMD |
Radeon 9550 |
RV350 |
Works |
Any |
See notes: 1 |
AMD |
Radeon 9800 |
R350 |
Works |
Any |
See notes: 1 |
AMD |
Radeon X300 |
RV370 |
Works |
Any |
See notes: 1 |
AMD |
Radeon X600 |
RV370 |
Works |
Any |
See notes: 1 |
AMD |
Radeon X700 |
|
Works |
Any |
See notes: 1 |
AMD |
Radeon Xpress X1270 |
RS690 |
Works |
Any |
See notes: 1 |
AMD |
Radeon X1650 |
RV530 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 2400 |
RV610 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 2600 |
RV630 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 3200 |
RS780 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 3400 |
RV620 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 3450 |
RV620 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 3650 |
RV635 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 3870 |
RV670 |
Doesn't work |
Any |
See notes: 1 - See "KMS on Radeon HD 3870" on x11@ |
AMD |
Radeon HD 4200 |
RS880 |
Works |
Any |
See notes: 1 |
AMD |
Mobility Radeon HD 4200 |
RS880M |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 4350 |
RV710 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 4650 |
RV730 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 4670 |
RV730 |
Works |
Any |
See notes: 1 |
AMD |
Radeon HD 4850/4870 |
RV770 |
Works |
Any |
See notes: 1 |
AMD |
FirePro 3D V4800 |
Evergreen / Redwood |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Mobility Radeon HD 5000 |
Madison / Redwood |
Doesn't work |
9.3, 10.0 |
See notes: 1 - Hybrid platform |
AMD |
Radeon HD 5450 |
Evergreen / Cedar |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 5750 |
Evergreen / Juniper |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 5770 |
Evergreen / Juniper |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Mobility Radeon HD 5870 |
Evergreen / Juniper |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6250 |
Northern Islands / Palm |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6310 |
Northern Islands / Palm |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6250 |
Northern Islands / Wrestler |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6290 |
Northern Islands / Wrestler |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6450 |
Northern Islands / Caicos |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6550 |
Sumo |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6800 |
Northern Islands / Barts |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6950 |
Northern Islands / Cayman |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 6970 |
Northern Islands / Cayman |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
FirePro V4900 |
Northern Islands / Turks |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 7340 |
Northern Islands / Wrestler |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 7560D |
Northern Islands / Cayman |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 7660D |
Northern Islands / Cayman |
Works |
9.3, 10.0 |
See notes: 1 |
AMD |
Radeon HD 7700 |
Southern Islands / Cape Verde |
Partially supported |
9.3, 10.0 |
See notes: 1, 2 - Acceleration doesn't work yet. |
AMD |
Radeon HD 7800 |
Southern Islands / Pitcairn |
Partially supported |
9.3, 10.0 |
See notes: 1, 2 - Acceleration doesn't work yet. |
AMD |
Radeon HD 7950 |
Southern Islands / Tahiti |
Partially supported |
9.3, 10.0 |
See notes: 1, 2 - Acceleration doesn't work yet. |
AMD |
Radeon HD 8000 |
Sea Islands |
Not supported |
|
|
AMD |
Radeon HD Rx 200 |
Volcanic Islands |
Not supported |
|
|
Intel |
GMA 950 |
Calistoga |
Works |
9.1 |
|
Intel |
GMA 4500 / 4500MHD |
Eaglelake / Cantiga |
Works |
9.1 |
|
Intel |
i[357]-xxx processors |
Ironlake |
Works |
9.1 |
|
Intel |
i[357]-2xxx processors |
Sandy Bridge |
Works |
9.1 |
|
Intel |
i[357]-3xxx processors |
Ivy Bridge |
Works |
9.1 |
|
Intel |
Xeon E3 V2 processors |
Ivy Bridge |
Works |
9.1 |
|
Intel |
i[357]-4xxx processors |
Haswell |
Works |
11.0 |
|
Intel |
Xeon E3 V3 processors |
Haswell |
Works |
11.0 |
|
Intel |
|
Broadwell |
Not supported |
|
|
Intel |
|
Skylake |
Not supported |
|
|
NVIDIA |
GeForce 6600 GT |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce 8200 |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce 8800 GTS |
|
Works |
Any |
Using nv driver, only report on current |
NVIDIA |
GeForce 8800M GTS |
|
Works |
Any |
Using nv driver |
NVIDIA |
GeForce GT 440 |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce GT 520 |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce GTX 550 Ti |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce GTX 560 Ti |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce GTX 650 Ti |
|
Works |
Any |
Using nvidia driver |
NVIDIA |
GeForce GTX 960 |
|
Works |
Any |
Using nvidia driver |
You may refer to the following resources to determine your video card family:
Notes:
- Radeon video cards:
- AGP cards not supported before FreeBSD 10-CURRENT
- Features not yet working/implemented:
- Hardware-assisted video decoding
Audio over HDMI or DisplayPort
- Multiple cards sharing output connectors
- Power management
- The GALLIUM backed Software renderer works.
Ports
Development repository
Before going into the official Ports tree, work is made in a separate Git repository hosted on GitHub. The workflow is described in a dedicated article.
To contribute, you should clone the repository and if you don't have write access, you can submit your work using:
"Pull Request" on GitHub;
- regular patches.
Kernel drivers
In sync with Linux...
Component |
Linux version |
DRM |
3.8 |
TTM |
ff7c60c (between 3.8 and 3.9) |
i915 |
3.8 |
Radeon |
3.8 |
How to contribute
We have a dedicated article to get people started with contributions to the kernel.
Video driver loaded at boot time
If you want to automatically load a video driver at boot time, we recommend to do it from /etc/rc.conf:
kld_list="radeonkms"
Loading the driver from /boot/loader.conf is not recommended and may not even work. For instance, loading i915kms like this is known to cause a hang early in boot with a black screen.
Wayland
While Wayland isn't ready for general use. This article will collect some information about Wayland.
FreeBSD Ports Wayland branch on GitHub (Completely Unsupported)
Name |
Status |
Comment |
wayland |
Ported, not tested |
Not tested use to no users |
libinput |
Not ported |
Input library from the Wayland folks, for keyboard, mouse, touchscreens. |
weston |
Not Ported |
The Weston Wayland Compositor |
libEGL |
Backend not enabled |
libEGL from Mesa has a wayland backend. |
Some known users.
Users |
Comments |
GNOME 3 |
Has support for Wayland in x11-toolkits/gtk30, x11/gdm (3.16), graphics/cogl, graphics/clutter, x11-wm/mutter and x11/gnome-shell. Additional it needs libinput to work. There might be other user of Wayland in the GNOME stack. |
KDE 5.2 |
KDE doesn't use Wayland for the windowing system yet, but only for the kde-plasma-workspace for the screenlocker currently. |
Webkit2 |
The www/webkit2-gtk3 2.8.1+ has wayland support |
cairo-dock |
|
gstreamer1-plugins-bad |
Uses wayland-egl (from mesa) |
Reporting
What information to provide
If you encounter problems with either the kernel driver or the in-development ports, please send a mail to freebsd-x11@FreeBSD.org and join:
the output of dmesg
the output of pciconf -lvbce
the output of devinfo -vr
the output of pkg info
your xorg.conf file (and included sub-files) if any
- your Xorg.log if the problem is at X.Org startup or during your X session
- any port build/install errors if relevant
core.$n.txt (in /var/crash) if you have a kernel panic
- any details you see fit
If everything is working for you, you may report on the same mailing (this helps us know which hardware/software configuration are believed to work) and join:
the output of dmesg
the output of pciconf -lvbce
the output of pkg info
your xorg.conf file (and included sub-files) if any
- your Xorg.log
- any details you see fit
Known issues
Xorg -configure crashes with a "Segmentation fault"; more information to come when the problem is analyzed. Anyway, you should not use Xorg -configure anymore: it is recommended to let Xorg do the autoconfiguration itself.
Add: