intel is the open source graphics driver for Intel GMA on-board graphics cards, starting with the Intel 810.
To choose the right driver, first detect the graphics card. lspci can be used for this task:
lspci | grep -i VGA
This should show something like this:
lspci | grep -i VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
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.
|Gen 1||810, 815||No||No||No||No||No||unsupported|
|Gen 2||i830M, 845G, 855GM, 865G||1.3||No||No||No||No||intel i915|
|Gen 3||915G/GM, 945G/GM, G/Q33, Q35, Atom D4xx/D5xx/N4xx/N5xx||1.4||No||No||No||No||intel i915|
|Gen 4||965G/GM/Q, G35, G41, G/Q43, G/GM/Q45||2.1||2.0||No||G/GM45: MPEG2 only||No||intel i965|
|Gen 5||Nehalem (Ironlake)||2.1||2.0||No||Yes||No||intel i965|
|Gen 6||Sandy Bridge||3.3||3.0||No||Yes||No||intel i965|
|Gen 7||Ivy Bridge, Valley View[table 1]||3.3||3.0||1.1[table 2]||Yes||Partial||intel i965|
|Gen 7.5||Haswell||4.5||3.1||1.1[table 2]||Yes||Partial||intel i965|
|Gen 8||Broadwell, Cherryview[table 3]||4.5||3.1||1.1[table 2]||Yes||Yes||intel i965 iris|
|Gen 9||Skylake, Broxton[table 4]||4.5||3.2||1.1[table 2]||Yes||Yes||intel i965 iris|
|Gen 9.5||Kaby Lake, Coffee Lake||4.5||3.2||2.1[table 2]||Yes||Yes||intel i965 iris|
- Valley View is the name of the graphics core associated with the Silvermont microarchitecture (Bay Trail platform, among others)
- Used to use the dev-libs/beignet package (Upstream info), but as of Q1/2020 the package is removed from portage in favour of dev-libs/intel-neo
- Cherryview is the name of the graphics core associated with the Airmont microarchitecture (Braswell, Cherry Trail platforms, among others)
- Broxton is the name of the graphics core associated with the Goldmont microarchitecture (Apollo Lake platform, among others)
A full list of Intel CPU graphic capabilities can be found here.
emerge --ask sys-kernel/linux-firmware
Otherwise errors such as the following might be visible in dmesg:
kernel: i915 0000:00:02.0: Direct firmware load for i915/skl_dmc_ver1_27.bin failed with error -2 kernel: i915 0000:00:02.0: Failed to load DMC firmware [https://01.org/linuxgraphics/intel-linux-graphics-firmwares], disabling runtime power management.
To configure to build the DMC firmware into the kernel binary, in this case,
Device Drivers ---> Generic Driver Options ---> -*- Userspace firmware loading support [*] Include in-kernel firmware blobs in kernel binary (i915/skl_dmc_ver1_27.bin) External firmware blobs to build into the kernel binary (/lib/firmware) Firmware blobs root directory
Device Drivers ---> Generic Driver Options ---> Firmware loader ---> -*- Firmware loading facility (i915/skl_dmc_ver1_27.bin) Build named firmware blobs into the kernel binary (/lib/firmware) Firmware blobs root directory
Including the firmware in-kernel may cause suspend-to-ram to fail, if this is a concern don't include the blob built into the kernel, instead, add the firmware blob into the initramfs.
For Gen11+ GPUs, GuC/HuC firmware are loaded by default since Linux 5.4 (see commit).
For Gen9 and Gen9.5 GPUs, GuC/HuC firmware won't be loaded by default, it is possible to enable loading of the firmware using kernel parameter
i915.enable_guc_loading=1 (prior to kernel 4.16) or
i915.enable_guc=2 (since kernel 4.16).
HuC firmware (and GuC as a dependent) is needed for AVC/HEVC/VP9 low power encoding bitrate control, including CBR, VBR, etc.. Enabling GuC/HuC firmware loading could cause issues on some systems, disable it if you experience freezing (for example, after resuming from hibernation).
To identify the firmware file name, either by checking
kernel: [ 1.294069] [drm] GuC: Failed to fetch firmware i915/kbl_guc_ver9_33.bin (error -2) kernel: [ 1.294079] [drm] HuC: Failed to fetch firmware i915/kbl_huc_ver01_07_1398.bin (error -2)
Or by grepping the MODULE_FIRMWARE in kernel source tree:
grep -rB1 'MODULE_FIRMWARE.*SKL' /usr/src/linux/drivers/gpu/drm/i915
/usr/src/linux/drivers/gpu/drm/i915/intel_guc_fw.c-#define I915_SKL_GUC_UCODE GUC_FW_PATH(skl, SKL_FW_MAJOR, SKL_FW_MINOR) /usr/src/linux/drivers/gpu/drm/i915/intel_guc_fw.c:MODULE_FIRMWARE(I915_SKL_GUC_UCODE); -- /usr/src/linux/drivers/gpu/drm/i915/intel_csr.c-#define I915_CSR_SKL "i915/skl_dmc_ver1_27.bin" /usr/src/linux/drivers/gpu/drm/i915/intel_csr.c:MODULE_FIRMWARE(I915_CSR_SKL); -- /usr/src/linux/drivers/gpu/drm/i915/intel_huc_fw.c- SKL_HUC_FW_MINOR, SKL_BLD_NUM) /usr/src/linux/drivers/gpu/drm/i915/intel_huc_fw.c:MODULE_FIRMWARE(I915_SKL_HUC_UCODE);
Then configure to build the firmware into the kernel as above.
The following kernel options need to be activated:
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 (
For hybrid Intel/AMD system, follow also the steps of radeon (open source) or fglrx (closed binary) drivers.
Since kernel version 4.4 the driver has been moved and the legacy fbdev support is now
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 [ ] Enable DisplayPort CEC-Tunneling-over-AUX HDMI support I2C encoder or helper chips ---> ARM devices ---- < > ATI Radeon < > AMD GPU ACP (Audio CoProcessor) Configuration ---- < > Nouveau (NVIDIA) cards <*> Intel 8xx/9xx/G3x/G4x/HD Graphics [ ] Enable alpha quality support for new Intel hardware by default () Force probe driver for selected new Intel hardware [*] Enable capturing GPU state following a hang [*] Compress GPU error state [*] Always enable userptr support [ ] Enable Intel GVT-g graphics virtualization host support drm/i915 Debugging ---> drm/i915 Profile Guided Optimisation ---> < > Virtual GEM provider < > Virtual KMS (EXPERIMENTAL) < > 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 ---> < > ETNAVIV (DRM support for Vivante GPU IP cores) < > GM12U320 driver for USB projectors < > Virtual Box Graphics Card [ ] Enable legacy drivers (DANGEROUS) ---- Frame buffer Devices ---> Backlight & LCD device support ---> Console display driver support ---> [*] Bootup logo --->
Kernel version 4.19 or later is recommended for Coffee Lake because it will work without enabling alpha support. Kernel 4.14 requires loading module i915 with alpha_support=1 or enabling
CONFIG_DRM_I915_ALPHA_SUPPORTin kernel config.
Portage uses the VIDEO_CARDS variable, which expands into the USE_EXPAND variable, for enabling support for various graphics cards. Assuming the x11-base/xorg-drivers package has already been installed, setting the VIDEO_CARDS variable in /etc/portage/make.conf will pull in the correct video driver:
VIDEO_CARDS="intel i965 iris"
Beginning with x11-base/xorg-drivers-1.19, the x11-base/xorg-drivers package (in addition to the mesa package) includes support for the
i965USE flag. This will omit selection of the deprecating x11-drivers/xf86-video-intel driver in favor of the more maintained, generic modesetting DDX driver built into x11-base/xorg-server.
After making any make.conf modifications, update the system so the changes take effect by passing the
--changed-use --deep options to emerge:
emerge --ask --changed-use --deep @world
Those wishing to not accept the Intel graphic driver defaults in the main repository can read on into the sub-sections below.
Before proceeding with the Intel DDX driver, note that this driver has been slowly deprecating for several years. This has caused other major Linux distributions to begin to move toward the modesetting DDX driver (detailed in the section below). Although presently faster than modesetting driver, there has been no official package release from Intel upstream for their DDX driver for quite some time, and is therefore causing a maintenance burden on Gentoo's X11 package maintainers.
With this being stated, the Intel DDX driver has slight speed advantages over the generic modesetting driver as it is able to more closely interact with hardware acceleration present in chips utilizing SNA and DRI3.
Check the USE flags of x11-drivers/xf86-video-intel:
USE flags for x11-drivers/xf86-video-intel X.Org driver for Intel cards
||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|
||Enable direct rendering: used for accelerated 3D and some 2D, like DMA|
||Enable SandyBridge's New Acceleration (useful on all chipsets, not just SandyBridge)|
||Build the intel-virtual-output tool|
||Enable virtual/udev integration (device discovery, power and storage device support, etc)|
||Enable UMA Acceleration Architecture|
||Enables X-Video Motion Compensation support|
emerge --ask x11-drivers/xf86-video-intel
To force Xorg server to use the Intel DDX driver with SNA for hardware accelleration, the following file can be created in /etc/X11/xorg.conf.d/:
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" EndSection
As mentioned above, the modesetting DDX driver is now the default driver on newer Intel graphics chipsets for Gentoo. This driver uses GLAMOR to accelerate 2D graphical over Mesa (the open source OpenGL implementation). As of
x11-base/xorg-drivers-1.19 this has become the default for Gentoo.
xorg-server/xorg-server-1.20.6 GLAMOR support is enabled unless the
minimal USE flag is enabled. No additional steps or configuration are necessary.
If it's necessary to force Xorg to load the modesetting driver the following config snippet can be used:
Section "Device" Identifier "Intel Graphics" Driver "modesetting" Option "AccelMethod" "glamor" Option "DRI" "3" EndSection
Note, if both 20-intel.conf and 20-modesetting.conf are defined in /etc/X11/xorg.conf.d/, the X server will attempt to load the files in alpha-numeric order.
Intel GMA X4500HD / G45 / GM45 and newer supports VAAPI hardware video acceleration.
As of November 15th, 2016 Vulkan is supported in the main ebuild repository for Intel Core processors using the i965 mesa driver.
Please note, that this will build a working Vulkan driver, but it will not provide a libvulkan.so.1, but a drivers-specific libvulkan_intel.so. The package media-libs/vulkan-loader provides libvulkan.so.1.
Various utilities useful for debugging are provided by x11-apps/igt-gpu-tools package.
For example GPU min/max/current frequency can by displayed by:
All provided commands can be discovered by listing the provided files with equery:
equery f x11-apps/igt-gpu-tools | grep bin
The i915 kernel driver includes the ability reduce flickering caused by modesetting operations during boot time. It does so by avoiding unnecessary modesetting operations when they are not needed. Fastboot is enabled by default on Skylake, Valleyview, Cherry Trail, and newer CPUs.
For CPUs older than Skylake, fastboot can be enabled by passing the
i915.fastboot=1 parameter to the i915 kernel driver during boot. This can either be set using the built-in kernel command-line or via a bootloader's kernel options. GRUB2 users can see the /etc/default/grub file.
acl USE flag is enabled globally and
elogind is being used (default for desktop profiles) permissions to video cards will be handled automatically. It is possible to check the permissions using getfacl:
getfacl /dev/dri/card0 | grep larry
A broader solution is to add the user(s) needing access the video card to the video group:
gpasswd -a larry video
Note that users will be able to run X without permission to the DRI subsystem, but acceleration will be disabled.
Choose one of the following configuration options:
- Classic Driver -- x11-drivers/xf86-video-intel
- As xorg is not aware of i915 or i965 they will need to be addressed as Driver
Section "Device" Identifier "intel" Driver "intel" EndSection
- Alternate Driver for Gen 4+ -- Modesetting
Experiences of this configuration can be found in the Discussion of this page. Add any difficulties there so this section can be improved.
- As of xorg-server-1.17, the modesetting driver was moved into x11-base/xorg-server. This driver has more features than the classic driver, such as the ability to support acceleration via GLAMOR.
- This configuration is the default for
VIDEO_CARDS="intel i965"beginning with x11-base/xorg-drivers-1.19. If you wish to use the classic driver, you will need to install x11-drivers/xf86-video-intel manually:
emerge --ask x11-drivers/xf86-video-intel
- xorg-server is easily configured to prefer
modesettingover the older
Section "Device" Identifier "modesetting" Driver "modesetting" 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.
- Gentoo bugtracker: known bugs
- Freedesktop.org bugtracker: known bugs
- Freedesktop.org bugtracker: known bugs
- How to file a bug report
- note that the modesetting DDX might cause video out of sync artefacts (when scrolling, or on videos) (see ) if you experience such artefacts, try the DDX driver
HTML5/VAAPI GPU hangs
If the GPU hangs up when watching VAAPI-accelerated video (e.g. on YouTube) try enabling IOMMU:
Device Drivers ---> [*] IOMMU Hardware Support ---> [*] Support for Intel IOMMU using DMA Remapping Devices [*] Enable Intel DMA Remapping Devices by default
Related upstream bug report.
A workaround is to set
TerminateServer=true in all sections of the file /usr/share/config/kdm/kdmrc, which starts with
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 the
TearFree option in xorg.conf:
Section "Device" Identifier "Device0" Driver "intel" Option "AccelMethod" "SNA" Option "TearFree" "true" EndSection
See also this Linux Mint tutorial.
- 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
nomodesetis 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 8th generation chipsets.
Brightness does not 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 the following argument to the kernel command-line:
On kernels >= 4.2, the video.use_native_backlight option is no longer available. You should use one of the following instead (experiment to see which works on your system):
Do your key bindings map to actions viewable in xev? Can you adjust the screen brightness using xbacklight? You can always do a work around via a keyboard remapping. For LXDE it can be done via:
<keybind key="XF86MonBrightnessUp"> <action name="Execute"> <command>xbacklight +5</command> </action> </keybind> <keybind key="XF86MonBrightnessDown"> <action name="Execute"> <command>xbacklight -5</command> </action> </keybind>
Using the Modesetting DDX, the x11-apps/xbacklight package will not work. Use sys-power/acpilight for a compatible interface.
White or missing textures in games
This is most likely caused by missing S3TC support. Possible solutions:
- Either set
force_s3tc_enableenvironment variable to
true, or enable this option in ~/.drirc (using x11-misc/driconf):
emerge --ask --oneshot x11-misc/driconf
- Install media-libs/libtxc_dxtn. On amd64, it might be a good idea to enable 32-bit build of this library since many games might be shipping 32-bit executables:
emerge --ask media-libs/libtxc_dxtn
- Xorg/Guide — explains what Xorg is, how to install it, and the various configuration options.
- Hprofile — an application that can be used to manage multiple profiles be it hardware or software.
- https://www.x.org/wiki/IntelGraphicsDriver/ - Intel at the X.Org wiki.
- https://keyj.emphy.de/files/linuxgraphics_en.pdf - Linux Graphics Demystified.
- Firmware, Intel. Retrieved on October 27, 2018
- Gentoo Forums, "Black screen on boot after kernel upgrade - grub2"
- Gentoo Forums, "Black screen on kernel 3.14.14"
- [Intel-gfx] [RFC] fastboot, freedesktop.org. Retrieved on February 9, 2019
- Gentoo Forums, "N3700 8086:22b1 i915 black screen, works in kernel 4.2.6"
- RedHat Bug 1272633: "video.use_native_backlight=1 doesn't work" (comment 5)
- Freedesktop Bug 96572: "xbacklight doesn't work with modesetting on intel"