The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "Make.conf/VIDEO CARDS"
Line 15: | Line 15: | ||
Graphics on Linux can be confusing due to the various technologies involved, not just the different graphics cards available but also the different software architectures for implementing graphics drivers. Traditionally, Open Source drivers for [[X]] have been implemented using [[DRI]], which stands for Direct Rendering Infrastructure. More recently, Open Source graphics drivers have started being written using a new architecture called [[Gallium]] (not to be confused with [[Glamour]].) And the proprietary NVIDIA driver uses neither the kernel's DRI infrastructure or the new Gallium architecture, but implements its own architecture entirely. | Graphics on Linux can be confusing due to the various technologies involved, not just the different graphics cards available but also the different software architectures for implementing graphics drivers. Traditionally, Open Source drivers for [[X]] have been implemented using [[DRI]], which stands for Direct Rendering Infrastructure. More recently, Open Source graphics drivers have started being written using a new architecture called [[Gallium]] (not to be confused with [[Glamour]].) And the proprietary NVIDIA driver uses neither the kernel's DRI infrastructure or the new Gallium architecture, but implements its own architecture entirely. | ||
It is helpful to be aware that they are different simply because there are sometimes multiple implementations of a driver for different graphics driver architectures, and certain ones may be better for your needs than others. For example, for NVIDIA cards there is an Open Source DRI-based driver called {{c|nouveau}}, and an Open Source Gallium-based driver called {{c|gallium-nouveau}}. And in addition, there is also NVIDIA's proprietary accelerated driver simply called {{c|nvidia}}. The {{c|nvidia}} graphics driver typically performs best and supports [[Vulkan]] but is closed-source. Some may prefer using {{c|nouveau}} or {{c|gallium-nouveau}} since they are Open Source. | |||
Some graphics drivers are more mature than others. For example, Intel integrated graphics drivers for {{c|DRI}} have been around a lot longer and are more mature than the equivalent Gallium drivers. And some graphics cards, like modern Radeon cards, only have a Gallium-based driver ({{c|gallium-radeonsi}}). Performance, both with 3D graphics, video playback, and general 2D use is highly dependent on the graphics driver you use so it's good to be aware of the different architectures so you are better able to select the driver that is ideal for your needs. | |||
=== Video Acceleration === | === Video Acceleration === |
Revision as of 21:45, July 27, 2019
The VIDEO_CARDS
make.conf setting is used to define what graphics support is enabled on your system. It is generally used only by packages that directly implement graphics support, such as media-libs/mesa
and a few others. To set VIDEO_CARDS
, set it in /etc/make.conf
, separating each value with a space, as follows:
/etc/make.conf
(bash source code) VIDEO_CARDS="intel i965 i915"
Funtoo Differences
Starting with Funtoo Linux 1.4, VIDEO_CARDS
settings work a bit differently than in Gentoo and are documented here. Also note that it is possible to have VIDEO_CARDS
set for you via use of a Funtoo profile mix-in.
The Funtoo VIDEO_CARDS
flags are designed to have a consistent format. If just a graphics driver is listed, such as i965
, then it is an X-based DRI driver. Drivers that use the new Gallium driver architecture are in the format gallium-<driver>
such as gallium-radeonsi
. In addition, any optional framework is listed as a prefix, such as vulkan-i965
for optional DRI-based Vulkan support for i965
+ Intel cards.
DRI vs. Gallium vs. NVIDIA
Graphics on Linux can be confusing due to the various technologies involved, not just the different graphics cards available but also the different software architectures for implementing graphics drivers. Traditionally, Open Source drivers for X have been implemented using DRI, which stands for Direct Rendering Infrastructure. More recently, Open Source graphics drivers have started being written using a new architecture called Gallium (not to be confused with Glamour.) And the proprietary NVIDIA driver uses neither the kernel's DRI infrastructure or the new Gallium architecture, but implements its own architecture entirely.
It is helpful to be aware that they are different simply because there are sometimes multiple implementations of a driver for different graphics driver architectures, and certain ones may be better for your needs than others. For example, for NVIDIA cards there is an Open Source DRI-based driver called nouveau
, and an Open Source Gallium-based driver called gallium-nouveau
. And in addition, there is also NVIDIA's proprietary accelerated driver simply called nvidia
. The nvidia
graphics driver typically performs best and supports Vulkan but is closed-source. Some may prefer using nouveau
or gallium-nouveau
since they are Open Source.
Some graphics drivers are more mature than others. For example, Intel integrated graphics drivers for DRI
have been around a lot longer and are more mature than the equivalent Gallium drivers. And some graphics cards, like modern Radeon cards, only have a Gallium-based driver (gallium-radeonsi
). Performance, both with 3D graphics, video playback, and general 2D use is highly dependent on the graphics driver you use so it's good to be aware of the different architectures so you are better able to select the driver that is ideal for your needs.
Video Acceleration
The following VIDEO_CARDS
settings are exclusive to Funtoo, and are safe to enable on all systems. They instruct Mesa to enable the related video acceleration technology in the driver if it is available:
xa
- Enable XA X Acceleration API
vaapi
- Enable VA/VAAPI support
vdpau
- Enable VDPAU support
xvmc
- Enable XVMC support
Therefore, it is safe, and recommended, to append all these settings to your VIDEO_CARDS
setting, which can be done by adding this to the end of your /etc/make.conf
:
/etc/make.conf
(bash source code) VIDEO_CARDS="${VIDEO_CARDS} xa vaapi vdpau xvmc"
If you are using the workstation
or desktop
flavor, these settings will be enabled for you automatically.
Use within Ebuilds
Inside ebuilds, the VIDEO_CARDS
settings is USE_EXPANDed to a USE
flag with a prefix of video_card_
. For example, radeonsi
will set the video_card_radeonsi
USE flag, gallium-osmesa
will set the video_card_gallium-osmesa
USE
flag, etc. Pay careful attention to the use of underscores and hyphens. Hyphens are used in the video card variable name itself, whereas underscores are used in video_card_
only.
Use within Make.conf
Typically, VIDEO_CARDS
settings are "stacked", which means that multiple related flags are specified. Here are some common examples:
/etc/make.conf
(bash source code) # This setting will support nearly all X/DRI-based Intel integrated graphics:
VIDEO_CARDS="intel dri3 i965 i915"
# This next setting is similar to the one above but will also enable Vulkan support:
VIDEO_CARDS="intel dri3 i965 vulkan-i965 i915"
# This next setting will enable Gallium for Intel integrated graphics -- The Intel drivers are currently more mature for X/DRI, though:
VIDEO_CARDS="intel gallium gallium-i915"
# This next setting could be useful if you have hybrid graphics on your laptop and you plan to use X:
VIDEO_CARDS="intel dri3 i965 i915 nvidia"
# This setting would be good for X-based graphics with Radeon cards using gallium:
VIDEO_CARDS="radeon gallium gallium-r300 gallium-r600 gallium-radeonsi"
VIDEO_CARDS Settings
The most-common VIDEO_CARDS
settings are listed below. For a comprehensive list of settings, type emerge -av mesa
and peruse the list of USE
flags.
name | description | platforms |
---|---|---|
name | description | platforms |
amdgpu | AMDGPU is an Open Source graphics driver developed by AMD that supports the latest AMD Radeon graphics cards (GCN 1.2, HD 7xxxx+). It is typically used in conjunction with Mesa's radeonsi driver which provides OpenGL support. There is a kernel-space part and a user-space part (in
| DRI • Gallium • X |
gallium-i915 | This is a gallium-based driver for Intel integrated graphics chipsets, i915 or later. | Gallium |
gallium-nouveau | Open Source NVIDIA Gallium-based graphics driver. | Gallium |
gallium-osmesa | "Osmesa" stands for "off-screen MESA" and allows rendering of graphics into a framebuffer in memory. This supports Gallium-based rendering. | Gallium |
gallium-r300 | A Gallium-based driver for older Radeon cards: R300, R350, RV350, RV380, RS400, RS480, R420, R423, RV410, RS600, RS690, RS740, RV515, R520, RV530, RV560, RV570, R580 | Gallium |
gallium-r600 | A Gallium-based driver for Radeon graphics cards: R600, RV610, RV630, RV620, RV635, RV670, RS780, RS880, RV770, RV730, RV710, RV740, CEDAR, REDWOOD, JUNIPER, CYPRESS, PALM (Wrestler), SUMO, SUMO2, ARUBA, BARTS, TURKS, CAICOS, CAYMAN | Gallium |
gallium-radeonsi | Open Source Radeon driver providing support for modern Radeon graphics (HD5430-HD5970, HDxxx, HD7xxx, R7 cards, R5 230, R9 280 and other R9 cards.) Gallium-based driver. | Gallium |
gallium-swrast | Gallium-based software-only OpenGL driver, also known as "softpipe". This setting will also enable Intel's "swr" driver (taking advantage of some Intel processor instructions for acceleration) on supported CPU architectures. | Gallium • X |
gallium-tegra | Open Source NVIDIA driver for Tegra (ARM CPU + Integrated NVIDIA graphics). Gallium-based driver. | Gallium |
gallium-virgl | This driver provides accelerated OpenGL rendering within virtual machines via VirtualGL. Gallium-based driver. | Gallium |
i915 | Enables support for Intel integrated graphics, i915 and more recent chipset. Most modern laptops with Intel integrated graphics will want this enabled. | DRI • X |
i965 | Enables support for Intel integrated graphics, i965 and more recent chipset. Most modern laptops with Intel integrated graphics will want this enabled. | DRI • X |
intel | Enables general support for Intel integrated graphics. This setting is required when using any Intel-related settings | DRI • X |
nouveau | Open Source NVIDIA DRI-based X graphics driver. | DRI • X |
nvidia | NVIDIA proprietary accelerated driver support. This driver includes support for traditional X-based accelerated rendering and Vulkan. Although this driver supports X, it does not use the kernel's DRI. | Vulkan • X |
osmesa | "Osmesa" stands for "off-screen MESA" and allows rendering of graphics into a framebuffer in memory. This supports X/DRI-based rendering. | DRI • X |
r100 | An X/DRI-based driver for older Radeon cards: R100, RV100, RV200, RS100, RS200 | DRI • X |
r200 | An X/DRI-based driver for older Radeon cards: R200, RV250, RV280, RS300 | DRI • X |
radeon | General support for Radeon cards. This setting is required when using any Radeon-related setting. | DRI • X |
swrast | DRI-based driver that does OpenGL without any hardware support. Enabled by default regardless of profile settings, since Mesa needs at least one "real" output to generate libGL. | DRI • X |
virgl | This driver provides accelerated OpenGL rendering within virtual machines via VirtualGL. X/DRI-based driver. | DRI • X |
vulkan-amdgpu | Enable Vulkan support for AMDGPU. | Vulkan |
vulkan-intel | Enables Mesa's DRI-based Vulkan driver for Intel chipsets. | DRI • Vulkan |