Working with the graphical environment on FreeBSD

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:

However, this doesn't include:

Team

Name

Responsible for

Baptiste Daroussin

Eitan Adler

Jean-Sébastien Pédron

Kernel video drivers

Jung-uk Kim

Koop Mast

X.Org-related ports, Mesa ports

Niclas Zeising

X.Org-related ports

The best way to contact us is:

We have a blog where we publish:

What have we been doing:

Roadmap

Project

Comment

Status

Blocks on

Notes

Kernel: i915 kernel driver: update to Linux 3.8

WIP

This includes Haswell support

Kernel: Linux API shim

Centralize OFED shim to help porting DRM

WIP

A proof-of-concept if being prepared to start the discussion

OpenCL

Investigate and add support for OpenCL on FreeBSD.

Finished, waiting for 8.x-R to go EOL in Juli 2015.

Please see the OpenCL page for details. Clover (Mesa based) ATI - and Beignet Intel OpenCL ports are ready.

X.Org: update to xserver 1.17

Ready, needs testing

Needs Mesa 9.2 or later. Blocked by FreeBSD release 8.4-R and 9.3-R, due to missing hardware context support in the i915kms driver.

Works with ATI/KMS, in our development repo, the xserver-next branch.

X.Org: update xf86-video-intel to 3.0

Version 2.99.917 in Git

Version 2.99.908 works on my Sandybridge system (kwm@)

X.Org: support Glamor

Requires xserver 1.16.

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: Use the Linux shim

Reduce the diff with Linux

Not started

Finish the Linux shim, need acceptance

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

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

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

Eagle Lake

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

Not supported

See Update i915 GPU driver to Linux 3.8

Intel

Xeon E3 V3 processors

Haswell

Not supported

See Update i915 GPU driver to Linux 3.8

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

You may refer to the following resources to determine your video card family:

Notes:

  1. 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
  2. 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:


Kernel drivers

In sync with Linux...

Component

Linux version

DRM

3.8

TTM

ff7c60c (between 3.8 and 3.9)

i915

3.5

Radeon

3.8

Video driver loaded at boot time

Radeon

The Radeon driver loads one or more firmwares when initializing the card. The X.Org driver, xf86-video-ati, will automatically load whatever it needs. However, if you want the card to be initialized during boot, you need to load radeonkms from the loader. In this case, you must include the firmware(s) too, because automatic loading won't work: dependency between radeonkms and the firmware(s) is resolved during device initialization (the correct set of firmwares depends on the Radeon model) but the filesystem is not mounted at the time of this initialization.

Here's an example:

  1. You need to list the firmware(s) required by your card. Load radeonkms and look at the loaded modules:

    $ kldload radeonkms
    $ kldstat | grep radeonkmsfw
    19    1 0xffffffff81fc0000 189d     radeonkmsfw_JUNIPER_pfp.ko
    20    1 0xffffffff81fc2000 1ca6     radeonkmsfw_JUNIPER_me.ko
    21    1 0xffffffff81fc4000 1325     radeonkmsfw_JUNIPER_rlc.ko
  2. In this case, the following firmwares need to be loaded:
    • radeonkmsfw_JUNIPER_pfp

    • radeonkmsfw_JUNIPER_me

    • radeonkmsfw_JUNIPER_rlc

  3. Now that you have the list, put the following lines in /boot/loader.conf (the file may not exist); note the _load suffix appended to kernel module names:

    radeonkmsfw_JUNIPER_pfp_load="YES"
    radeonkmsfw_JUNIPER_me_load="YES"
    radeonkmsfw_JUNIPER_rlc_load="YES"
    radeonkms_load="YES"


Wayland

While Wayland isn't ready for general use. This article will collect some information about Wayland.

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


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:

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:

Known issues

Graphics (last edited 2015-08-13 11:07:06 by KoopMast)