Dual GPU di Slackware

Submitted by w41lf0x on Wed, 10/01/2014 - 23:35

slackwareTulisan ini adalah lanjutan dari tulisan saya sebelumnya tentang #Slackware di mesin #Dell Precision M6800. Kali ini saya ingin bercerita seputar menggunakan Hybrid Graphics milik mesin tersebut di Slackware64-current. Sebelumnya silakan pahami dulu tentang Hybrid Graphics, terutama istilah MUX dan MUXLESS di sini:

http://xorg.freedesktop.org/wiki/RadeonFeature/#5

Dell Precision M6800 ini termasuk ke dalam golongan Hybrid Graphics MUX-less. Ada dua adaptor grafis di dalam mesin ini, #Intel dan #AMD:

root@ictm68:~# lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Haswell Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: AMD/ATI [Advanced Micro Devices, Inc.] Saturn XT

VGA Intel disebut sebagai Integrated Graphic Processor (IGP), sedangkan yang AMD disebut sebagai Discrete Graphic Processor (DGP). Tidak ada antarmuka khusus (hardware) untuk berganti adaptor grafis. Pergantian penggunaan IGP ke DGP dan sebaliknya diharapkan berjalan secara otomatis sesuai dengan beban olah grafis yang dijalankan oleh aplikasi, terutama di lingkungan desktop. Untuk booting dan penggunaan desktop beban rendah seperti mengetik di teks editor atau masuk CLI, normalnya sistem hanya menggunakan IGP untuk menghemat daya (sekaligus mengurangi panas). Tetapi jika desktop anda menggunakan kompositor atau anda menjalankan game 3D, maka sistem akan menggunakan DGP yang memang didesain memiliki performa lebih tinggi daripada IGP. Teknologi ini pertama kali dikembangkan oleh NVIDIA, dikenal dengan istilah #NVIDIA #OPTIMUS, yang kemudian disusul oleh AMD (ATI) dengan merk dagang bernama AMD Hybrid Graphics.

Nah yang menjadi masalah adalah, apakah Slackware dengan driver #opensource mampu memanfaatkan kedua GPU tersebut secara optimal?

Setelah melakukan percobaan dan pengecekan performa, akhirnya saya berpendapat bahwa #Linux 3.14.x dan Mesa 10.2.6 yang digunakan oleh Slackware sudah mampu melakukan pergantian GPU secara otomatis cukup dengan menggunakan shell environment DRI_PRIME

Nah, caranya bagaimana?

Pertama, pastikan bahwa kita tidak menginstall driver propietary catalyst (fglrx) milik AMD. Kita hanya perlu menggunakan driver bawaan kernel Linux.

Kedua, pastikan bahwa driver Intel dimuat oleh kernel dengan KMS aktif. Kalau tidak yakin KMS aktif atau tidak, kita bisa "memaksa" kernel untuk mengaktifkan KMS Intel pada saat booting dengan menuliskan opsi aktiivasi modeset di file /etc/modprobe.d/vga.conf (kalau file-nya tidak ada, bikin saja):

options i915 modeset=1

Ketiga, dari hasil percobaan saya, sebaiknya kita blacklist driver radeon terlebih dahulu supaya kernel hanya mengaktifkan vga Intel terlebih dahulu sebelum vga radeon diaktifkan. Ini hanya untuk memastikan urutan pemuatan driver adalah intel, lalu radeon. Kita masih memanfaatkan file /etc/modprobe.d/vga.conf tadi:

blacklist radeon

Keempat, kita muat driver radeon menggunakan rc.modules atau rc.local, terserah sukanya yang mana. Yang jelas, skrip rc.X tersebut akan dieskekusi setelah kernel selesai booting dan masuk ke init. Artinya driver radeon akan dimuat setelah driver vga intel digunakan oleh kernel:

/sbin/modprobe radeon dpm=1

Kelima, tambahkan baris berikut ke lingkungan shell (shell environment):

echo "DRI_PRIME=1" >> ~/.profile

Keenam, reboot mesin untuk memuat konfigurasi driver tadi.

Ketujuh, silakan masuk ke desktop KDE dan tes sendiri menggunakan program glxgears atau radeontop (di terminal) atau bahkan game yang cukup berat (via wine).

postimage

Selamat mencoba