Framebuffer

From Gentoo Wiki
Jump to:navigation Jump to:search
Resources

The framebuffer's original function is as a video RAM cache to allow more flexibility to (older) video cards. Many newer cards come with framebuffers on board, which are often already compatible with many operating systems. Enabling framebuffer support in the Linux kernel will often cause graphical artifacts or black screen displays. For most newer cards, this option should not be selected when using the LiveDVD.

Checking the console driver

On the boot media:

root #dmesg | grep fb0
[   11.388220] fbcon: amdgpudrmfb (fb0) is primary device
[   11.796455] amdgpu 0000:0a:00.0: [drm] fb0: amdgpudrmfb frame buffer device

In the previous output, fb0 is the primary display. The console will appear here. The frame buffer device tells that is indeed a framebuffer console. fb0: amdgpudrmfb tells that the driver in use is the kernel's AMDGPU DRM FB framebuffer driver.

That is included with the kernel amdgpu driver. No other framebuffer drivers are strictly required but see early console drivers below.

Other video cards will show something similar.

Warning
Users intent on installing nvidia-drivers see the Early framebuffer drivers section below.

nVidia users may find that the above grep returns nouveaufb. It is not possible to use the kernel nouveau driver and nvidia-drivers concurrently. Only the early framebuffer drivers may be selected.

The kernel selection

Most of the the kernel framebuffer options are for use with hardware over 20 years old. These options almost always interfere with modern Direct Render Manager (DRM) provided framebuffers as both will attempt to configure the hardware and neither will work.

DRM framebuffer drivers

For everyone except nvidia-drivers users.

On the Graphics support sub-menu within the kernel configuration Device driver menu, choose:

KERNEL
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
  [*]   Enable legacy fbdev support for your modesetting driver
  (100)   Overallocation of the fbdev buffer

Note that the fbdev option is invisible unless the following option is also selected further down in the Graphic support menu:

KERNEL
Frame buffer Devices --->
  <*>    Support for frame buffer devices --->

Back on the Graphics support menu, choose the DRM driver for the system. Xorg will use this later.

For example, to use AMDGPU:

KERNEL
<M> AMD GPU  
  [ ]   Enable amdgpu support for SI parts  
  [ ]   Enable amdgpu support for CIK parts  
  [*]   Always enable userptr write support  
        ACP (Audio CoProcessor) Configuration  --->  
        Display Engine Configuration  --->  
  [ ]   HSA kernel driver for AMD GPU devices  
 < > Nouveau (NVIDIA) cards  
 < > Intel 8xx/9xx/G3x/G4x/HD Graphics  
 < > Virtual GEM provider  
 < > Virtual KMS (EXPERIMENTAL)│  
 < > DRM driver for VMware Virtual GPU  
 < > Intel GMA500/600/3600/3650 KMS Framebuffer

There are very few uses for the Virtual drivers.

Important
Building these drivers as modules (<M>) avoids the requirement to discover and include the required firmware in the kernel.
root #emerge --ask sys-kernel/linux-firmware

will install the required firmware.

Early framebuffer drivers

Early because the DRM Framebuffer drivers typically require firmware to be loaded which implies that they are often built as loadable modules. They, therefore, start sometime later than built in drivers. This mean that the early console messages are lost as the console is blank until the DRM driver is initialized.

Only four Early Framebuffer Drivers are safe for modern hardware:

KERNEL
<*>   VGA 16-color graphics support
 [*]   VESA VGA graphics support
 [*]   EFI-based Framebuffer Support
 <*>   Simple framebuffer support

It is safe to choose them all as none of then try to control the hardware. The kernel will pick and choose at boot time.

Important
All the others must be disabled.

See also

  • Intel — the open source graphics driver for Intel GMA on-board graphics cards and Intel Arc dedicated graphics cards, starting with the Intel 810.
  • Nouveau — the open source driver for NVIDIA graphic cards.
  • Radeon — a family of open source graphics drivers for older AMD/ATI Radeon graphics cards.
  • Xorg/Guide — Verify legacy framebuffer drivers have been disabled

External resources