Introduction

Graphics team members help to maintain the low-level components that support desktop environments (DEs) such as KDE Plasma and Gnome.

This level includes:

This level does not include:

Hardware Support

If neither drm-kmod nor NVIDIA graphics software (below) supports your hardware – and if your computer uses UEFI – you may use the system console frame buffer (SCFB). See x11-drivers/xf86-video-scfb and GraphicsOld/SCFB.

Features that will not work with the system console frame buffer include:

drm-kmod

graphics/drm-kmod indirectly provides a range of kernel modules for use with:

AMD graphics

Two modules exist for AMD hardware:

– choose one, based on the generation of the hardware.

In most cases:

We have an AMD graphics support matrix. The X.Org project provides a Decoder ring for engineering vs marketing names.

If UEFI boot results in a conflict between a driver and the EFI frame buffer, you can add this line to /boot/loader.conf to disable the buffer:

With the buffer disabled, console output will not appear until the driver loads. https://github.com/FreeBSDDesktop/DEPRECATED-freebsd-base-graphics/issues/170 explains.

AMD GPU

The amdgpu module is for post-HD7000 or Tahiti GPUs.

Radeon KMS (kernel mode setting)

The radeonkms module is for older GPUs (pre-HD7000 or pre-Tahiti).

Intel Integrated Graphics (aka HD Graphics)

Intel HD Graphics refers to the class of graphics chips that are integrated on the same die as an Intel CPU. Wikipedia offers a good overview of the variations and names used for generations of Intel HD Graphics. Intel HD Graphics chips are found in many modern laptop and desktop systems that ship with an Intel CPU. Commonly-found configurations include Kabylake Intel i915 HD Graphics.

To enable the integrated graphics chip on Intel CPUs, install drm-kmod. The resulting module should work well on all compatible systems.

This page includes a table of states for various Intel chipsets.

If you notice high CPU usage, or excessive tearing with HD video: multimedia/libva-intel-driver may help – installation should be in addition to drm-kmod, mesa-libs and mesa-dri.

Example configuration:

In most cases:

– X.Org should autodetect the driver, and utilize the modesetting X.Org driver and glamor driver.

NVIDIA graphics

nvidia-driver

Five drivers are ported and packaged:

The number of available ports, and the related links, will vary.

NVIDIA-provided pages:

Most users will prefer a package.

Configuration

For versions prior to 358.09:

# sysrc -f /etc/rc.conf kld_list+=nvidia

For superior versions:

# sysrc -f /etc/rc.conf kld_list+=nvidia-modeset

If configuration of X.Org is not automated, then aim for x11/nvidia-xconfig – the port of NVIDIA's own tool to manipulate X configuration files for the NVIDIA driver. nvidia-xconfig(1)

nvidia-drm

Announcing nvidia-drm port and Call for Testing (2022-11-13)

General

Other NVIDIA-related areas include:

Virtual machines

VMware

Experimental support for accelerated graphics in FreeBSD as guest OS in VMware was added to graphics/drm-devel-kmod.

Known issue:

VirtualBox

A DRM driver for VirtualBox is planned for the Linux source tree. Once there, a FreeBSD port is planned.

Side notes

The tables that were once here were not a comprehensive record of supported hardware:

GPU codenames vs. marketing names:

If you have tested hardware that is not listed, please report the results.

Known issues

Permission errors, or inability to start X when using drm-kmod.

Xorg -configure crashes with a segmentation fault.

Problems with drm-kmod on i386.

Reporting

Issues/bugs

If encountering problems in either the kernel driver or the in-development ports, post the following information to the mailing list

Debugging tips

Test results

If everything works, let us know on the mailing list. Your information helps us confirm which hardware/software configurations work well.

Please include:

If your laptop works well with FreeBSD, add it to the Laptops page.

Development

Developer information, including tasks in progress, is in the legacy GraphicsOld/Developer area.

Team

who

area of responsibility/knowledge

NiclasZeising

Everything ports related, team meetings, etc.

EmmanuelVadot

mesa, drm drivers

BaptisteDaroussin

ports, a bit of everything

WarnerLosh

core liason, contact him before committing maintainer timeouts

JungukKim

ports, member emeritus

KoopMast

ports, member emeritus

MartinWilke

ports, member emeritus

Contact

TODO

Tasks for contributors

Task

Developer

Status

Comment

Get Intel GPU Tools working

Initial port exists

Outdated initial port here

Notes from meetings

https://github.com/freebsd/meetings#readme

Preferred policies on patches

In the past, the FreeBSD graphics stack got far behind the upstream sources. One of the main reasons for this was that as a project we'd been terrible about getting changes accepted upstream (or even trying to upstream them). These technical issues lead to much frustration and exacerbated many teamwork issues with the stack. For a time, things were somewhat dysfunctional. However, the graphics teams has caught up on all this technical debt by upstreaming changes; integrating Linux compatible APIs (like evdev); or by writing adapters to make FreeBSD-specific things like devd look like their Linux counterparts.

To avoid a repeat of this accumulation of technical debt, and all the issues that go with it, the graphics teams has a number of preferred practices it likes to follow. Generally we prefer using released versions of the elements of FreeBSD graphics stack. Issues come up between releases, and if the patches are accepted by upstream, then we'll include them. When there are issues that are being sorted out upstream, we prefer to let that run its course because they are usually the experts, though exceptions are made when reasonable. At the very least, we'd like any patches submitted upstream before they are included in a port to strongly encouraging upstreaming. Finally, when new features are implemented, there's a strong preference for using Linux and other APIs upstream sources are using over inventing something new for FreeBSD where possible.

We also desire to have FreeBSD be in the CI process for as many upstream sources as possible, though currently many do not yet have FreeBSD CI support. Helping upstreams get better CI integration will help us maintain the velocity of releases as FreeBSD is more likely to work and needs less regression testing on updates by us.

Legacy documentation

See GraphicsOld. If migration from the old page omitted anything critical, please notify the team.


CategoryProject CategoryTeam CategoryPorts

Graphics (last edited 2023-07-30T02:53:00+0000 by GrahamPerrin)