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

AMD GPUs kernel-side driver

Jung-uk Kim

Koop Mast

X.Org-related ports, Mesa ports

Niclas Zeising

X.Org-related ports

The best way to contact us is:

Roadmap

Project

Comment

Status

Blocks on

Notes

Kernel: Radeon driver: port from Linux 3.8

Port Radeon GPU driver from Linux 3.8.

Committed in r254885

Mesa: update to 9.1.6

Committed in r328711

Mesa: dri Gallium driver

Experimental Gallium dri driver

Ready

The dri ports has support for WITH_GALLIUM when WITH_NEW_XORG is set. This includes llvm backed llvmpipe software raster and radeonsi driver.

Kernel: Radeon driver: merge to FreeBSD 9

Committed in r263170

Ports: Cairo 1.12 update

Cairo 1.12 gives screen artifacts with certain drivers. It is also blocking gtk30 from being updated to 3.10.

Asked users to test with different hardware/xorg versions. See results

CFT mail

Ports: Enable WITH_NEW_XORG by default

Makes FreeBSD usable on 2007+ Intel-based computers out-of-the-box.

Ready

General agreement, testing

Committed to CURRENT

Ports: Rework font handling in bsd.xorg.mk

Not started

The fonts handling is really messy and hard to understand, and with staging and/or pkgng it seem to have broken somewhat

X.Org: update to xserver 1.14

Ready

Merge of Radeon kernel driver to FreeBSD 9

X.Org: update to xserver 1.15

Ready, needs testing

Needs Mesa 9.2 or later, ATI/KMS.

Works with ATI/KMS, is in experimental repo

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

Port in xorg-dev/brances/experimental

Still in beta, currently version 2.99.909 works on my Sandybridge system (kwm@)

Kernel: DRM kernel code: update to Linux 3.8

Take DRM code from Linux 3.8.

Ready for testing

Patch

Kernel: i915 kernel driver: update to Linux 3.8

Take i915 GPU driver from Linux 3.8.

WIP

Update to DRM generic code

Mesa: update to 10.1

Mesa 10.1 is the new stable version.

Ready

Update to i915 driver (missing hw context feature) aka needs i915 kernel update.

Default mesa version bumped to 9.1.7, gallium and vdpau support. Is in experimental repo.

Ports: remove old X.Org stack

Remove old version of ports affected by WITH_NEW_XORG.

WITH_NEW_XORG being the default, and we decided to not support old "legacy" drivers anymore.

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

In experimental, Mesa uses libdevq, a brand new lib providing the minimal requirements. This allows to build libgbm, drm egl platform, and the first OpenCL tests are working.

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

Ports: Make port for Weston

WIP

Dependency to udev

Weston is a composer reference implementation of wayland.

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

AMD

Radeon 7500

RV200

Works

Any

See notes: 2

AMD

Radeon 9000

RV250

Works

Any

See notes: 2

AMD

Radeon 9200

RV280

Works

Any

See notes: 2

AMD

Radeon 9250

RV280

Works

Any

See notes: 2

AMD

Radeon 9550

RV350

Works

Any

See notes: 2

AMD

Radeon 9800

R350

Works

Any

See notes: 2

AMD

Radeon X300

RV370

Works

Any

See notes: 2

AMD

Radeon X600

RV370

Works

Any

See notes: 2

AMD

Radeon Xpress X1270

RS690

Works

Any

See notes: 2

AMD

Radeon X1650

RV530

Works

Any

See notes: 2

AMD

Radeon HD 2400

RV610

Works

Any

See notes: 2

AMD

Radeon HD 2600

RV630

Works

Any

See notes: 2

AMD

Radeon HD 3200

RS780

Works

Any

See notes: 2

AMD

Radeon HD 3400

RV620

Works

Any

See notes: 2

AMD

Radeon HD 3450

RV620

Works

Any

See notes: 2

AMD

Radeon HD 3650

RV635

Works

Any

See notes: 2

AMD

Radeon HD 3870

RV670

Works

Any

See notes: 2

AMD

Mobility Radeon HD 4200

RS880M

Works

Any

See notes: 2

AMD

Radeon HD 4350

RV710

Works

Any

See notes: 2

AMD

Radeon HD 4650

RV730

Works

Any

See notes: 2

AMD

FirePro 3D V4800

Evergreen / Redwood

Works

9.3, 10.0

See notes: 1, 2

AMD

Mobility Radeon HD 5000

Madison / Redwood

Doesn't work

9.3, 10.0

See notes: 1, 2 - Hybrid platform

AMD

Radeon HD 5450

Evergreen / Cedar

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 5750

Evergreen / Juniper

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 5770

Evergreen / Juniper

Works

9.3, 10.0

See notes: 1, 2

AMD

Mobility Radeon HD 5870

Evergreen / Juniper

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6250

Northern Islands / Palm

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6310

Northern Islands / Palm

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6250

Northern Islands / Wrestler

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6290

Northern Islands / Wrestler

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6290

Northern Islands / Cape Verde

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6450

Northern Islands / Caicos

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6550

Sumo

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6800

Northern Islands / Barts

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6950

Northern Islands / Cayman

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 6970

Northern Islands / Cayman

Works

9.3, 10.0

See notes: 1, 2

AMD

Radeon HD 7340

Northern Islands / Wrestler

Works

9.3, 10.0

See notes: 1, 2, 3 - Acceleration doesn't work yet.

AMD

Radeon HD 7560

Southern Islands / Aruba

Partially supported

9.3, 10.0

See notes: 1, 2, 3 - Acceleration doesn't work yet.

AMD

Radeon HD 7660

Southern Islands / Aruba

Partially supported

9.3, 10.0

See notes: 1, 2, 3 - Acceleration doesn't work yet.

AMD

Radeon HD 7700

Southern Islands / Cape Verde

Partially supported

9.3, 10.0

See notes: 1, 2, 3 - Acceleration doesn't work yet.

AMD

Radeon HD 7800

Southern Islands / Pitcairn

Partially supported

9.3, 10.0

See notes: 1, 2, 3 - Acceleration doesn't work yet.

AMD

Radeon HD 7950

Southern Islands / Tahiti

Partially supported

9.3, 10.0

See notes: 1, 2, 3 - Acceleration doesn't work yet.

AMD

Radeon HD 8000

Sea Islands

Not supported

AMD

Radeon HD Rx 200

Volcanic Islands

Not supported

Intel

i[357]-xxx

Ironlake

Works

9.1

See notes: 1

Intel

i[357]-2xxx

Sandy Bridge

Works

9.1

See notes: 1

Intel

i[357]-3xxx

Ivy Bridge

Works

9.1

See notes: 1

Intel

i[357]-4xxx

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 650 Ti

Works

Any

Using nvidia driver

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

Notes:

  1. Requires WITH_NEW_XORG when building ports.

  2. Radeon video cards when WITH_NEW_XORG is set:

    • AGP cards not supported
    • Features not yet working/implemented:
      • Suspend/resume
      • Hardware-assisted video decoding
      • GPGPU
      • Multiple cards sharing output connectors
  3. The GALLIUM backed Software renderer works.

Ports

Development repository

Before going into the official ports tree, work is made in a separate Subversion repository.

Browse development tree

http://trillian.chruetertee.ch/ports/browser/trunk/

Checkout SVN repository

https://trillian.chruetertee.ch/svn/ports/trunk/

You can easily merge the development tree into /usr/ports by using the following script: http://people.freebsd.org/~miwi/xorg/xorgmerge. Be sure to change the directory configuration options.


Installing KMS Ports

Important: the KMS features are not in the binary packages and must be built from ports.

  1. Enable in /etc/make.conf:

    WITH_NEW_XORG=yes
    WITH_GALLIUM=yes  # Needed for Radeon cards, but does no harm with Intel devices.

    WITH_KMS is no longer needed.

  2. Make certain the ports tree is up-to-date and all installed ports are current.
  3. If ports-mgmt/portmaster is not already installed, install it:

    pkg install ports-mgmt/portmaster
  4. Remove old versions of graphics/libGL and graphics/dri:

    pkg delete -f graphics/libGL graphics/dri
  5. Install or rebuild ports that are affected:

    portmaster graphics/libdrm graphics/libGL graphics/dri x11-servers/xorg-server

    If you install X.Org drivers for the first time (adapt this list to your needs):

    portmaster                        \
      x11-drivers/xf86-input-keyboard \
      x11-drivers/xf86-input-mouse    \
      x11-drivers/xf86-video-intel    \
      x11-drivers/xf86-video-ati

    If drivers are already installed, just rebuild them:

    portmaster xf86-

To have a working console with the Radeon and Intel KMS drivers, please read the vt(9) page.


Cairo 1.12 testing

Results of running with Xorg with cairo 1.12.

Xorg-server version

Video driver

Driver version

Chip

FreeBSD version

Result

Comments

1.7.7

Intel UMS

2.7.1

(unknown)

8.4-STABLE

Mostly works

Works reasonably with Fluxbox, occasional artifacts

1.7.7

NVIDIA

319.32

GeForce 210 (GT218)

HEAD

Works

1.12

Intel KMS

2.21.15

Sandybridge i7-2630QM

10.0-RC

Works

1.12

NVIDIA

331.49

GeForce 8800M GTS

11-CURRENT r262336

Works

1.12

NVIDIA

331.49

GeForce GTX 650 Ti Boost

10-STABLE r262247

Works

1.12

Radeon KMS

7.2.0

Radeon RV280

10.0-RELEASE

Works

1.12

Radeon KMS

7.2.0

Radeon RV730

10.0-RC

Works

1.12

Radeon KMS

7.2.0

Mobility Radeon HD 5870

HEAD

Works

1.12

Radeon UMS

6.16.4

Radeon RV370 X300 SE

9.2-STABLE amd64

Works

Kernel drivers

In sync with Linux...

Component

Linux version

DRM

Older than 3.4

TTM

ff7c60c (between 3.8 and 3.9)

i915

Older than 3.4

Radeon

3.8

Video driver loaded at boot time

Radeon

The Radeon driver loads one or more firmwares when initializing the card. If you want to load radeonkms from loader, you must include the firmwares too, because automatic loading won't work (the filesystem isn't mounted at the time of the card initialization).

To list the firmwares required by your card, "kldload" radeonkms and look at the loaded modules. Here's an example:

$ 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

In this case, one would need to build into/load:

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 2014-04-16 10:27:51 by JeanSébastienPédron)