Difference between pages "Package:AMD Catalyst Video Drivers" and "Make.conf"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
m (Updated some <code> and <tt> tags to {{c}} and {{f}} templates, changed some text.)
 
 
Line 1: Line 1:
{{Ebuild
== What is the make.conf file? ==
|Summary=Accelerated ATI/AMD binary drivers for Radeon HD 5000 and newer chipsets.
Make.conf is portage's and Funtoo's main configuration file. It contains many variables that define how a package will installed in a Funtoo system. You can customize portage internal variables, such as, portage tree location, sources tarball location, overlays, to name a few. You can customize hardware specs, such as TMPFS, disk limits, GCC compilation flags to achieve best performance, etc. A great deal of this customization is done through the make.conf file. This page will attempt to explain the uses of the make.conf file, different variables that can be added to it, and their uses.  
|CatPkg=x11-drivers/ati-drivers
|Maintainer=Drobbins
|Homepage=
|Repository=Funtoo Overlay
|Overlay=Funtoo
}}
{{Important|Version 14.12-r3 and above now include ATI GLESv2 and EGL libraries, which should improve stabilty with GNOME.}}


{{f|x11-drivers/ati-drivers}}, often referred to as "{{c|fglrx}}", the name of its kernel module, is the proprietary, accelerated driver for AMD (ATI) graphics cards.  
== Where is make.conf located? ==
{{f|make.conf}} can be found in two different places:
# As a text file at {{f|/etc/portage/make.conf}}
# As a symbolic link to the above text file, located at {{f|/etc/make.conf}} (this is now deprecated).


=== Preparing to Install ===
No special tool is required to edit {{f|/etc/portage/make.conf}}, besides your favorite text editor, of course:
==== Default Kernel ====
{{console|body=
###i## nano /etc/portage/make.conf
}}
== Variables ==
Portage is very cutomizable. Because of this, many variables are available to configure {{f|/etc/portage/make.conf}}. Below is an example {{f|make.conf}} file showing some of the variables that can be used to customize portage. The format of a line of this file is usually <code>VARIABLENAME="variable arguments"</code>.
{{file|name=/etc/portage/make.conf|lang=|desc=example make.conf variables|body=
CFLAGS="-march=amdfam10 -O2 -pipe"
CXXFLAGS="-march=amdfam10 -O2 -pipe"
INPUT_DEVICES="evdev"
VIDEO_CARDS="vesa nouveau"
MAKEOPTS="-j2"
USE="mmx sse"
PYTHON_ABIS="2.7 3.3"
PYTHON_TARGETS="2.7 3.3"
RUBY_TARGETS="ruby21"
ACCEPT_LICENSE="*"
}}


If you are using the default kernel -- one like debian-sources that was built automatically, then you'll want to blacklist a few modules to prevent them from loading and interfering with the AMD Catalyst module. To avoid having the open source Radeon drivers automatically load and ruin your day, create a blacklist file as follows:
Below is a list of variables that can be used in {{f|make.conf}}, along with a description of what they do. For more information on these and other variables, read {{c|man make.conf}}.


{{file|name=/etc/modprobe.d/radeon.conf|desc=Prevent open source DRM and radeon drivers from loading|body=
=== Accept All Licenses ===
blacklist radeon
{{file|name=/etc/portage/make.conf|lang=|desc=accept all licenses|body=
blacklist drm
ACCEPT_LICENSE="*"
}}
}}


==== Custom Kernel ====
=== Relocate Source Compile Directory ===


If you are building a custom kernel, rather than blacklisting modules as above, you can simply ensure that the Direct Rendering Manager and in-kernel Radeon drivers are not enabled. If you do build them as modules, you will need to blacklist them as above. Also ensure that the following kernel options are enabled.
By default portage unpacks and compiles sources in {{f|/var/tmp/}}  it appends {{f|portage/pkg-cat/pkg}} to compile a package elsewhere. For example, if portage compiles a package in {{f|/tmp}}, it will be built at: {{f|/tmp/portage/pkg-cat/pkg}}. If you have Funtoo installed on an SSD, it may be a wise decision to mount {{f|/tmp}} in RAM or on a HDD so that you can minimize the number of writes to your SSD and extend its lifetime. After {{f|/tmp}} has been mounted off of your SSD, you can tell portage to compile future packages in {{f|/tmp}}, instead of in {{f|/var/tmp}}. To do this, add the following line to your {{f|/etc/portage/make.conf}}:


{{kernelop|desc=
{{file|name=/etc/portage/make.conf|lang=|desc= |body=
[*] Enable loadable module support
PORTAGE_TMPDIR="/tmp"
Processor type and features --->
      [*] MTRR (Memory Type Range Register) support
Bus options (PCI etc.) --->
      [*] PCI Express Port Bus Support
      [*] Message Signaled Interrupts (MSI and MSI-X)
Device Drivers --->
      Graphics support --->
            < > Direct Rendering Manager (xFree86 4.1.0 and higher DRI support) --->
}}
}}


{{note|If you need support for AGP cards, enable the following kernel options:}}
=== Video_Cards ===
{{kernelop|desc=
Device Drivers --->
      Graphics support --->
            <*> /dev/agpgart (AGP Support) --->
                  Select an appropriate AGP driver:
                  <*> AMD Opteron/Athlon64 on-CPU GART support
}}


=== Editing make.conf ===
The {{c|VIDEO_CARDS}} variable tells portage which video drivers you wish to use on your system. To see the different options that exist for this variable, see [[Video]].


Add the following to your {{f|/etc/make.conf}}. For more information on the meaning of the {{c|VIDEO_CARDS}} variable, see [[Video]]:
=== Makeopts ===
<console>
MAKEOPTS can be used to define how many parallel compilations should occur when you compile a package, which can speed up compilation ''significantly''. A rule of thumb is the number of CPUs (or CPU threads) in your system plus one. If for example you have a dual core processor without [[wikipedia:Hyper-threading|hyper-threading]], then you would set MAKEOPTS to 3:
###i## nano /etc/make.conf
...
VIDEO_CARDS="fglrx"
</console>


=== Enabling AMD Catalyst Control Center ===
{{file|name=/etc/portage/make.conf|lang=|desc=set portage to use 3 threads|body=
MAKEOPTS="-j3"
}}


If you would like to built the {{c|amdcccle}} (Advanced Micro Devices Catalyst Control Center: Linux Edition), a GUI to configure the drivers, add the following to {{f|/etc/portage/package.use/ati-drivers}}:
If you are unsure about how many processors/threads you have then use /proc/cpuinfo to help you.
<console>
{{console|body=
###i## nano /etc/portage/package.use/ati-drivers
(chroot) # ##i##grep "processor" /proc/cpuinfo | wc -l
...
16
x11-drivers/ati-drivers qt4
}}
</console>


{{Note|If you are using a desktop or workstation profile, this USE flag may be enabled by default. Even if it is, adding it will not hurt anything.}}
Set MAKEOPTS to this number plus one:


=== Emerging the package ===
{{file|name=/etc/portage/make.conf|lang=|desc=set portage to use 17 threads|body=
 
MAKEOPTS="-j17"
If you allready have emerged xorg-server, all you need to install the drivers is running the following command:
}}
<console>
###i## emerge -av --changed-use --deep @world
</console>
 
Otherwise, you may install the drivers with:
<console>
###i## emerge -av x11-drivers/ati-drivers
</console>


Before using the driver, ensure that the "fglrx" module has been loaded -- run {{c|modprobe fglrx}} as root  -- it should return with no error. If the module can't be found, run {{c|depmod -a}} as root -- then the modprobe command should work. If you are switching from the open source Radeon driver, then shutting down your desktop and rebooting your system (be sure to disable xdm) may be required to get the new "fglrx" module to load cleanly.


=== Configuring ===
{{important|Use processors +1 if you use [https://en.wikipedia.org/wiki/CFQ Completely Fair Queuing] I/O scheduler. If you use [http://ck.kolivas.org/patches/bfs/bfs-faq.txt BFQ] use only as many jobs as you have CPUs. However chances are that you use CFQ.}}


Next, set ati-drivers to manage the system's OpenGL and OpenCL implementations.
Doing this is particulary important for desktop environments like GNOME, which use hardware acceleration by default. Not doing this will result in the GNOME display manager not being able to start!


<console>
=== USE flags ===
###i## eselect opengl set ati
###i## eselect opencl set amd
</console>


Afterwards, run <code>aticonfig</code> to modify the X-server configuration file to work with the ati-drivers:  
USE flags define what functionality is enabled when packages are built. It is not recommended to add a lot of them during installation; you should wait until you have a working, bootable system before changing your USE flags. A USE flag prefixed with a minus (" - ") sign tells Portage not to use the flag when compiling.  Through use flags we generate more secure stripped down binaries with reduced attack surface & (slightly) better performance.  A Funtoo guide to USE flags will be available in the future. For now, you can find out more information about USE flags in the [https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/USE Gentoo Handbook].
<console>
###i## aticonfig --initial
</console>


{{tip|If you would like to have a full-resolution framebuffer with ati-drivers, check out [[uvesafb| uvesafb]]}}
Some hardware options should be turned on if they're not already. To see what your hardware supports:
 
=== Multi-Head Display ===
 
There are a couple of options for setting up a multi-head display. For some systems, all you need to do is plug in your additional monitor, and it will be detected by your desktop environment, and will work.
 
If your second monitor does not display anything at all, then play around with your X configuration. Try using the following command to generate a new X config:


{{console|body=
{{console|body=
# ##i##aticonfig --initial=dual-head
###i## cat /proc/cpuinfo
}}  
}}


You can use the {{c|--screen-layout={left|right|above|below}}} option to specify the relationship of the second screen to the first.
{{file|name=/etc/portage/make.conf|lang=|desc=Example of Turning On Hardware Optimizations|body=
USE="mmx, sse, sse2, sse3, 3dnow, 3dnowext"}}


For more than two heads, or multiple cards, you can use the following approach to generate an appropriate X config. First, list adapters to see what adapters are available:
=== Input ===
some devices need defined such as {{package|x11-drivers/xf86-input-synaptics}} for touch pads.


{{console|body=
{{file|name=/etc/portage/make.conf|lang=|desc=synaptics example|body=
# ##i##aticonfig --list-adapters
INPUT_DEVICES="synaptics evdev"
}}
}}


Now, a variant of one of the following commands to generate an X configuration for your needs:
=== Linguas ===
 
LINGUAS tells Portage which local language to compile the system and applications in (those who use LINGUAS variable like OpenOffice). It is not usually necessary to set this if you use English. If you want another language such as French (fr) or German (de), set LINGUAS appropriately:
{{console|body=
# ##i##aticonfig --initial --heads=4 --adapter=1
# ##i##aticonfig --adapter=0,2 --initial
# ##i##aticonfig --adapter=all --initial
# ##i##aticonfig --xinerama=on
}}


One you have your displays enabled so that your mouse pointer can move to all displays, you still may not be able to drag windows to certain monitors. In this situation, each monitor is probably configured as a separate X screen, and you'll need to use the Catalyst Control Center {{c|amdcccle}} GUI configuration tool to tie them together. The Catalyst Control Center is installed when the {{c|qt4}} USE variable is enabled.
{{file|name=/etc/portage/make.conf|lang=|desc=set system language to french|body=
 
LINGUAS="fr"
Open up a graphical terminal, and become root by typing {{c|su -}} -- your user will need to be in the {{c|wheel}} group to do this:
 
{{console|body=
$ ##i##su -
Password: ##i##*******
# source /etc/profile
# amdcccle
}}
}}


[[File:amdcccle.png|class=img-responsive|center]]
{{PageNeedsUpdates}}
Navigate to Display Manager, and choose the option {{c|Multi-display desktop with display(s) X}} for each display. Then, drag and drop the blue displays to arrange them to match how they are arranged in front of you. Click {{c|OK}}. The Catalyst Control Center will tell you that you will need to restart your system for the changes to take effect. Simply log out if you are running {{c|xdm}}, or end your X session, and start it up again. You should now have a fully-functioning multi-head display.
[[Category:System]]
 
=== Troubleshooting ===
==== I am using a HDMI connection, and my monitor's display has a black border around it. ====
Disable overscan as follows:
 
<console>
$ ##i##su -
Password: ##i##*********
# ##i##aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0
</console>
 
You will need to restart your X session for the changes to take effect. If you are using a display manager, logging out and back in again should cause the new settings to be visible.
 
==== The tabs in Google Chrome are becoming garbled/corrupted ====
 
New versions of Google Chrome use hardware acceleration by default which appears to have rendering issues with AMD's drivers. To work around this, disable hardware acceleration in Google Chrome by going to {{c|Settings}}, {{c|Show advanced settings...}} and then uncheck the {{c|Use hardware acceleration when available (requires Chrome restart)}}. Once Chrome is restarted, the rendering problem should be resolved.
 
==== Compton with backend glx does not work well with ati-drivers ====
Try running compton with the following switches:
<console>
###i## compton --backend glx --vsync none --paint-on-overlay
</console>
 
[[Category:Video Cards]]
[[Category:First Steps]]
{{EbuildFooter}}

Revision as of 19:08, February 24, 2015

What is the make.conf file?

Make.conf is portage's and Funtoo's main configuration file. It contains many variables that define how a package will installed in a Funtoo system. You can customize portage internal variables, such as, portage tree location, sources tarball location, overlays, to name a few. You can customize hardware specs, such as TMPFS, disk limits, GCC compilation flags to achieve best performance, etc. A great deal of this customization is done through the make.conf file. This page will attempt to explain the uses of the make.conf file, different variables that can be added to it, and their uses.

Where is make.conf located?

make.conf can be found in two different places:

  1. As a text file at /etc/portage/make.conf
  2. As a symbolic link to the above text file, located at /etc/make.conf (this is now deprecated).

No special tool is required to edit /etc/portage/make.conf, besides your favorite text editor, of course:

root # nano /etc/portage/make.conf

Variables

Portage is very cutomizable. Because of this, many variables are available to configure /etc/portage/make.conf. Below is an example make.conf file showing some of the variables that can be used to customize portage. The format of a line of this file is usually VARIABLENAME="variable arguments".

   /etc/portage/make.conf - example make.conf variables
CFLAGS="-march=amdfam10 -O2 -pipe"
CXXFLAGS="-march=amdfam10 -O2 -pipe"
INPUT_DEVICES="evdev"
VIDEO_CARDS="vesa nouveau"
MAKEOPTS="-j2"
USE="mmx sse"
PYTHON_ABIS="2.7 3.3"
PYTHON_TARGETS="2.7 3.3"
RUBY_TARGETS="ruby21"
ACCEPT_LICENSE="*"

Below is a list of variables that can be used in make.conf, along with a description of what they do. For more information on these and other variables, read man make.conf.

Accept All Licenses

   /etc/portage/make.conf - accept all licenses
ACCEPT_LICENSE="*"

Relocate Source Compile Directory

By default portage unpacks and compiles sources in /var/tmp/ it appends portage/pkg-cat/pkg to compile a package elsewhere. For example, if portage compiles a package in /tmp, it will be built at: /tmp/portage/pkg-cat/pkg. If you have Funtoo installed on an SSD, it may be a wise decision to mount /tmp in RAM or on a HDD so that you can minimize the number of writes to your SSD and extend its lifetime. After /tmp has been mounted off of your SSD, you can tell portage to compile future packages in /tmp, instead of in /var/tmp. To do this, add the following line to your /etc/portage/make.conf:

   /etc/portage/make.conf
PORTAGE_TMPDIR="/tmp"

Video_Cards

The VIDEO_CARDS variable tells portage which video drivers you wish to use on your system. To see the different options that exist for this variable, see Video.

Makeopts

MAKEOPTS can be used to define how many parallel compilations should occur when you compile a package, which can speed up compilation significantly. A rule of thumb is the number of CPUs (or CPU threads) in your system plus one. If for example you have a dual core processor without hyper-threading, then you would set MAKEOPTS to 3:

   /etc/portage/make.conf - set portage to use 3 threads
MAKEOPTS="-j3"

If you are unsure about how many processors/threads you have then use /proc/cpuinfo to help you.

(chroot) # grep "processor" /proc/cpuinfo

Set MAKEOPTS to this number plus one:

   /etc/portage/make.conf - set portage to use 17 threads
MAKEOPTS="-j17"


   Important

Use processors +1 if you use Completely Fair Queuing I/O scheduler. If you use BFQ use only as many jobs as you have CPUs. However chances are that you use CFQ.


USE flags

USE flags define what functionality is enabled when packages are built. It is not recommended to add a lot of them during installation; you should wait until you have a working, bootable system before changing your USE flags. A USE flag prefixed with a minus (" - ") sign tells Portage not to use the flag when compiling. Through use flags we generate more secure stripped down binaries with reduced attack surface & (slightly) better performance. A Funtoo guide to USE flags will be available in the future. For now, you can find out more information about USE flags in the Gentoo Handbook.

Some hardware options should be turned on if they're not already. To see what your hardware supports:

root # cat /proc/cpuinfo
   /etc/portage/make.conf - Example of Turning On Hardware Optimizations
USE="mmx, sse, sse2, sse3, 3dnow, 3dnowext"

Input

some devices need defined such as x11-drivers/xf86-input-synaptics for touch pads.

   /etc/portage/make.conf - synaptics example
INPUT_DEVICES="synaptics evdev"

Linguas

LINGUAS tells Portage which local language to compile the system and applications in (those who use LINGUAS variable like OpenOffice). It is not usually necessary to set this if you use English. If you want another language such as French (fr) or German (de), set LINGUAS appropriately:

   /etc/portage/make.conf - set system language to french
LINGUAS="fr"