Discrete AMD GPU is slower than integrated Intel GPU

Hi guys,

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.


Original issue

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 :

$ 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 DRI_PRIME.

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:

Superposition Intel

Using AMD Radeon R5 M330 (by running unigine-superposition with DRI_PRIME=1) :

Superposition AMD

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 radeon :

MODULES=(amdgpu radeon)

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 amdgpu driver.

$ 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

After reboot, 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 glxinfo output.

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 unigine-superposition with DRI_PRIME=1, I've got this result :

Superposition AMDGPU

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.


Disable Radeon

Just to make sure, I've decided to disable radeon driver. I create /etc/modprobe.d/noradeon.conf then write following lines :

blacklist radeon

After reboot, I run Unigine benchmark again and got following result :

Superposition AMDGPU no Radeon

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 :smile:

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:

Unigine Heaven - Intel

Using AMD Radeon R5 M330 (by running unigine-heaven with DRI_PRIME=1) :

Unigine Heaven - AMD

I also use pts/gputest from Phoronix Test Suite and I got following results :

Phoronix GPU Test

All benchmark suggests that my AMD perform poorly than my Intel. This especially obvious in Triangle test on Phoronix.


Giving Up

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 ?

Thanks !

It is because most of the times, those slow AMD and Nvidia dedicated GPU's are only added for marketing reasons.
The theme there is, that most customers think that integrated graphics suck and dedicated graphics rock. But that is only true when using more expensive dedicated cards and thus higher priced notebooks.

Long story short: The dedicated GPU that is in your notebook is a ultra low budget chip that is only added alongside integrated GPU's to blind people for marketing reasons. It has worse performance then the integrated chip. It would be ok to use alongside CPU's without integrated GPU's.

The only thing that you MIGHT be able to try is checking if you have dual channel RAM in use (meaning 2 modules installed), because in most notebooks, even dedicated GPU's use the RAM as video memory and thus benefit from higher RAM speed, which is only achievable by dual channel RAM.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by