I've had some trouble on setting up my dual GPU laptop, so I'm here looking for some help. This post stays on my draft for several hours, because every time I want to submit it, I stumbled into new hints. However, at the end I still can't find the solution so here it is.
I have a Lenovo G50-80 laptop with dual GPU. My specifications, according to the laptop box is like this:
CPU : Intel i7-5500U GPU-1 : Intel HD 5500 GPU-2 : AMD Radeon R5 M330
And here is what reported by
$ hwinfo --cpu --gfxcard --short cpu: Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz, 1975 MHz Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz, 1750 MHz Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz, 1628 Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz, 1729 MHz graphics card: Lenovo Radeon R5 M330 Intel HD Graphics 5500
While trying a new game, I realized that game run really slow. After looking around, I realize that I haven't use my AMD GPU, which (I thought) what make the game runs slow. So I looking around on Arch wiki and found out about
Long story short, I enabled PRIME offloading, and now I can use my AMD GPU :
$ glxinfo | grep "OpenGL renderer" OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) $ DRI_PRIME=1 glxinfo | grep "OpenGL renderer" OpenGL renderer string: AMD HAINAN (DRM 2.50.0, 4.19.102-1-MANJARO, LLVM 9.0.1)
Unfortunately, when I try to play the game using
DRI_PRIME=1, the game run similarly, and at some point a bit slower than the Intel one. So I decided to run benchmark using Unigine Superposition with "720p low" preset, and here are the result :
Using Intel HD 55000:
Using AMD Radeon R5 M330 (by running
So, as you can see, the AMD one is a lot slower than the Intel. One thing that I noticed when running the benchmark, on each scene the FPS from AMD is always consistent while Intel will give fluctuated FPS. For example, on one scene Intel will give FPS jumping around from 3 to 29 FPS, meanwhile AMD is consistent giving it 11 FPS.
Learned about AMDGPU
After looking around, I realized that my Manjaro installation uses Radeon driver and it's recommended to use AMDGPU driver since it's supports Vulkan. Fortunately, AMD Radeon R5 M330 belongs to Volcanic Islands group, which means it's supported by AMDGPU.
So, following the wiki, I installed all necessities :
sudo pacman -S mesa lib32-mesa xf86-video-amdgpu \ vulkan-radeon lib32-vulkan-radeon \ libva-mesa-driver lib32-libva-mesa-driver \ mesa-vdpau lib32-mesa-vdpau
I also modify the MODULES in
/etc/mkinitcpio.conf to make sure
amdgpu is set as first module instead of
According to wiki, now all I need is reboot the system and then AMDGPU will be enabled, which hopefully will make things better. Unfortunately the benchmark result for AMD doesn't improved at all. After I check it using
hwinfo, it already uses
$ hwinfo --gfxcard PCI 400.0: 0380 Display controller [Created at pci.386] Unique ID: YmUS.OHfDsIOll02 Parent ID: QSNP.mnNtnh3hMFD SysFS ID: /devices/pci0000:00/0000:00:1c.4/0000:04:00.0 SysFS BusID: 0000:04:00.0 Hardware Class: graphics card Model: "Lenovo Radeon R5 M330" Vendor: pci 0x1002 "ATI Technologies Inc" Device: pci 0x6660 "Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile]" SubVendor: pci 0x17aa "Lenovo" SubDevice: pci 0x390c "Radeon R5 M330" Revision: 0x83 Driver: "amdgpu" Driver Modules: "amdgpu" Memory Range: 0xb0000000-0xbfffffff (ro,non-prefetchable) Memory Range: 0xd1000000-0xd103ffff (rw,non-prefetchable) I/O Ports: 0x3000-0x30ff (rw) Memory Range: 0xd1040000-0xd105ffff (ro,non-prefetchable,disabled) IRQ: 54 (14784 events) Module Alias: "pci:v00001002d00006660sv000017AAsd0000390Cbc03sc80i00" Driver Info #0: Driver Status: radeon is active Driver Activation Cmd: "modprobe radeon" Driver Info #1: Driver Status: amdgpu is active Driver Activation Cmd: "modprobe amdgpu" Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #17 (PCI bridge)
I wonder where did I go wrong.
Succesfully(?) activated(?) AMDGPU
I've made a progress (maybe).
If you look at my
hwinfo output above, you will find following lines :
Hardware Class: graphics card Model: "Lenovo Radeon R5 M330" Vendor: pci 0x1002 "ATI Technologies Inc" Device: pci 0x6660 "Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / Radeon 520 Mobile]"
So, Linux can identify the model of my AMD graphic card correctly (Radeon R5 M330). However, in device list it's identified as Radeon HD 8000 series first, and R5 M330 seconds.
Since Radeon HD 8000 series is part of Southern Islands (SI), I've decided to enable support for it. Following wiki, first I create
/etc/modprobe.d/amdgpu.conf then put following lines :
options amdgpu si_support=1 options amdgpu cik_support=0
Next I create
/etc/modprobe.d/radeon.conf then put following lines :
options radeon si_support=0 options radeon cik_support=0
glxinfo give output like this :
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer" OpenGL renderer string: AMD Radeon (TM) R5 M330 (HAINAN, DRM 3.27.0, 4.19.102-1-MANJARO, LLVM 9.0.1)
So, now it knows that the renderer is
AMD Radeon R5 M330 and not ordinary
AMD HAINAN as shown in my first
At this point I'm already confused why my R5 M330 is detected as Southern Islands, but at least AMDGPU activated now.
When I run the benchmark once again by running
DRI_PRIME=1, I've got this result :
So, there is clearly improvement from Radeon driver (score 1121). However, it still falls behind my Intel integrated graphic (score 1568). What more confusing is the last benchmark shows that Unigine detect both GPU, yet it uses i915 driver.
Just to make sure, I've decided to disable
radeon driver. I create
/etc/modprobe.d/noradeon.conf then write following lines :
After reboot, I run Unigine benchmark again and got following result :
The result is quite similar as before, except now it only detects AMD GPU and use
amdgpu driver instead of
i915 driver, which mean it works correctly now
However, I still wonder why its score is far lower than Intel HD 5500 (score 1568).
Other Benchmark Engine
Just to make sure, I also use other benchmark to test it. First I use Unigine Heaven, and I got following results :
Using Intel HD 55000:
Using AMD Radeon R5 M330 (by running
I also use
pts/gputest from Phoronix Test Suite and I got following results :
All benchmark suggests that my AMD perform poorly than my Intel. This especially obvious in Triangle test on Phoronix.
So here I am, still doesn't know why my AMD GPU is slower than Intel. Is it driver issue ? Or is it because DRI PRIME offloading ? Any suggestions for me ?