intel

From Gentoo Wiki
Jump to: navigation, search

intel is the open source graphics driver for Intel GMA onboard graphics cards, starting with the Intel 810.

Hardware detection

To choose the right driver, first detect the graphics card. lspci can be used for this task:

root #lspci | grep -i VGA

This should show something like this:

root #lspci | grep -i VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
Note
The lspci output for the graphics controller may refer to CPU generations, whereas the Feature support table below refers to GPU generations. E.g., “3rd Gen” in the example lspci output above corresponds to “Gen7” in the table below.

Feature support

Generation Chipset OpenGL OpenGL ES OpenCL VAAPI VIDEO_CARDS
Gen 1 810, 815 1.2 No No No intel
Gen 2 i830M, 845G, 855GM, 865G 1.3 No No No intel
Gen 3 915G/GM, 945G/GM, G/Q33, Atom D4xx/D5xx/N4xx/N5xx 1.4/1.5 No No No intel i915
Gen 4 965G/GM/Q, G/Q35, G41, G/Q43, G/GM/Q45 2.1 2.0 No G/GM45: MPEG2 only[table 1] intel i965
Gen 5 Nehalem (Ironlake) 2.1 2.0 No Yes intel i965
Gen 6 Sandy Bridge 3.3 3.0 No Yes intel i965
Gen 7 Ivy Bridge, Valley View, Haswell, Atom Z36xx/Z37xx 3.3 3.0 1.1[table 2] Yes intel i965
Gen 8 Broadwell, Cherryview (Braswell, Cherry Trail) 3.3 3.0 No Yes intel i965
Gen 9 Skylake 4.4 3.0 No Yes intel i965
  1. Experimental H264 support can be enabled. See Enable_hardware_H264_decoding_on_Intel_G/GM45
  2. A FOSS implementation is in development under the name Beignet

A full list of Intel CPU graphic capabilities can be found here.

Installation

Kernel

The following kernel options need to be activated:

KERNEL
Processor type and features  --->
    [*] MTRR (Memory Type Range Register) support
Device Drivers  --->
    Graphics support  --->
        <*> /dev/agpgart (AGP Support)  --->
             <*> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
        <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
            <*> Intel 8xx/9xx/G3x/G4x/HD Graphics
            [*]   Enable modesetting on intel by default
            [*]   Enable legacy fbdev support for the modesetting intel driver

The legacy fbdev support is required since kernel 3.14.14 at least for i915 (CONFIG_DRM_I915_FBDEV=y).[1][2] For hybrid Intel/AMD system, follow also the steps of radeon (opensource) or fglrx (closed binary) drivers.

Since kernel version 4.4 the driver has been moved and the legacy fbdev support is now CONFIG_DRM_FBDEV_EMULATION=y.

KERNEL linux-4.4
        Device Drivers  --->
            Graphics support  --->
                <*> /dev/agpgart (AGP Support)  --->
                    --- /dev/agpgart (AGP Support)
                    < >   AMD Opteron/Athlon64 on-CPU GART support
                    -*-   Intel 440LX/BX/GX, I8xx and E7x05 chipset support
                    < >   SiS chipset support
                    < >   VIA chipset support
                [ ] VGA Arbitration
                [ ] Laptop Hybrid Graphics - GPU switching support
                <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
                    --- Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
                    [*]   Enable legacy fbdev support for your modesetting driver
                [ ] Allow to specify an EDID data set instead of probing for it
                    I2C encoder or helper chips  --->
                < > 3dfx Banshee/Voodoo3+
                < > ATI Rage 128
                < > ATI Radeon
                < > AMD GPU
                < > Nouveau (NVIDIA) cards
                < > Intel I810
                <*> Intel 8xx/9xx/G3x/G4x/HD Graphics
                [ ]   Enable preliminary support for prerelease Intel hardware by default
                < > Matrox g200/g400
                < > SiS video cards
                < > Via unichrome video cards
                < > Savage video cards
                < > Virtual GEM provider
                < > DRM driver for VMware Virtual GPU
                < > Intel GMA5/600 KMS Framebuffer
                < > DisplayLink
                < > AST server chips
                < > Kernel modesetting driver for MGA G200 server engines
                < > Cirrus driver for QEMU emulated device
                < > QXL virtual GPU
                < > DRM Support for bochs dispi vga interface (qemu stdvga)
                    Display Panels  ----                 
                    Display Interface Bridges  ----
                    Frame buffer Devices  --->
                -*- Backlight & LCD device support  --->
                    Console display driver support  --->
                [*] Bootup logo  --->    

Driver

Portage uses the VIDEO_CARDS variable, which expands into the USE_EXPAND variable, for enabling support for various graphics cards in packages. Assuming x11-base/xorg-drivers has already been installed, setting VIDEO_CARDS variable in etc/portage/make.conf will pull in the correct video driver: (see the feature matrix)

VIDEO_CARDS="intel"
FILE etc/portage/make.confGen 2 and Gen 3
VIDEO_CARDS="intel i915"
FILE etc/portage/make.confGen 4 through Gen 9
VIDEO_CARDS="intel i965"

"intel" is for x11-base/xorg-drivers and i915 resp. i965 are for media-libs/mesa.

Check the USE flags of x11-drivers/xf86-video-intel:

USE flags for x11-drivers/xf86-video-intel X.Org driver for Intel cards

debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces global
dri Enable direct rendering: used for accelerated 3D and some 2D, like DMA global
dri3 Use DRI3 by default local
sna Enable SandyBridge's New Acceleration (useful on all chipsets, not just SandyBridge) local
udev Enable virtual/udev integration (device discovery, power and storage device support, etc) global
uxa Enable UMA Acceleration Architecture local
xvmc Enables X-Video Motion Compensation support local

After making any changes update the system so the changes take effect by running the emerge command with the --changed-use option:

root #emerge --ask --changed-use --deep @world

VAAPI

Intel GMA X4500HD / G45 / GM45 and newer supports VAAPI hardware video acceleration.

Configuration

Permissions

If you have the acl USE flag enabled globally and are using ConsoleKit (i.e you're using a Desktop profile) permissions to video cards will be handled automatically. You can check the permissions using getfacl:

user $getfacl /dev/dri/card0 | grep larry
user:larry:rw-

A broader solution is to add the user you want to be able to access the video card to the video group:

root #gpasswd -a larry video

Note that you will still be able to run X without permission to the DRI subsystem, but usually not with acceleration enabled.

xorg.conf

As xorg is not aware of i915 or i965 they will need to be addressed as Driver intel.

FILE /etc/X11/xorg.conf.d/device_no_vesa.conf
#
# Remove errors regarding modules "fbdev" and "vesa"
# 

Section "Device"
        Identifier "Device0"
        Driver "intel"

	Option "Monitor-LVDS" "Internal Panel"
	Option "Monitor-VGA" "External VGA Monitor"
EndSection

The X server is designed to work out-of-the-box, with no need to manually edit X.Org's configuration files. It should detect and configure devices such as displays, keyboards, and mice.

However, the main configuration file of the X server is the xorg.conf.

Troubleshooting


html5/vaapi gpu hangs

If your GPU hangs up when watching vaapi-accelerated video e.g. on youtube, you can try enabling your IOMMU:

KERNEL
Device Drivers  --->
    [*] IOMMU Hardware Support --->
        [*] Support for Intel IOMMU using DMA Remapping Devices
        [*]   Enable Intel DMA Remapping Devices by default

Related upstream bug report.

KDM freezes

A workaround is to set TerminateServer=true in all sections of the file /usr/share/config/kdm/kdmrc, which starts with X-.

KDE's plasma eating CPU

If /usr/bin/plasmashell is always consuming several percent of CPU, perhaps this is related to a vsync problem. QT Quick Animation seem to loop too fast when vsync is not managed by the driver (Reference)

A way to enable vsync with SNA is to enable "TearFree" Option in xorg.conf

FILE /etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
        Identifier "Device0"
        Driver "intel"

        Option      "AccelMethod" "SNA"
        Option      "TearFree"    "true"
EndSection

thanks to mint doc

Black screen

  • According to this Debian wiki, CONFIG_FRAMEBUFFER_CONSOLE must be set to y (aka built-in to the kernel). Otherwise, it is possible to always have a black screen unless nomodeset is passed to the kernel, thus disabling kernel mode setting (KMS). acpi_osi="Linux" can be passed to the kernel command line to try to solve this kind of issue. This is usually done through the bootloader.
  • Kernel with version 4.2 or newer is needed with some gen8 chipsets[3].

Brightness doesn't change with keyboard shortcuts

First, make sure vendor compatibility is on in the kernel configuration. Toshiba for Toshiba, etc.

If it is, or when the brightness buttons are working, the issue is that the kernel can not detect where the brightness control is located.

Luckily, this is easy enough to modify, as long as the kernel version is >= 3.13.x and < 4.2.

Add
KERNEL command line
video.use_native_backlight=1
to the kernel command line.

On kernels >= 4.2, the video.use_native_backlight option is no longer available.[4] You should use one of the following instead (experiment to see which works on your system):

KERNEL command line
acpi_backlight=video
KERNEL command line
acpi_backlight=native
KERNEL command line
acpi_backlight=vendor

See also

  • Xorg/Guide - A guide on how to configure Xorg.
  • hprofile - Switching between other graphics drivers and intel.

External resources

References