Open source radeon drivers not working properly with Radeon HD 8550M
Submitted by Marko Tikvic
Assigned to Default DRI bug account
Description
Dear Maintainer,
I have a Lenovo laptop with hybrid AMD/Intel graphics cards. I would like to use the discrete Radeon card for heavy rendering operations such as game development and gaming.
Output of xrandr --listproviders:
Provider 0: id: 0x76 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:Intel
Provider 1: id: 0x4f cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 0 outputs: 0 associated providers: 1 name:radeon
But I get lower fps when I run games with discrete GPU:
xrandr --setprovideroffloadsink radeon Intel
env DRI_PRIME=1 <game>
<- results in barely 20 fps for Dota 2
than if I run them with integrated Intel's card:
env DRI_PRIME=0 <game>
<- results in 50-60 fps for Dota 2
The output of DRI_PRIME=0 glxinfo | grep 'OpenGL renderer' is:
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
and the ouput of DRI_PRIME=1 glxinfo | grep 'OpenGL renderer' is:
OpenGL renderer string: Gallium 0.4 on AMD HAINAN
From dmesg I can see this error occuring after starting the game with DRI_PRIME=1 flag set:
[ 1406.107887] [drm] probing gen 2 caps for device 8086:9c18 = 5323c42/0
[ 1406.107892] [drm] PCIE gen 2 link speeds already enabled
[ 1406.110997] [drm] PCIE GART of 1024M enabled (table at 0x0000000000040000).
[ 1406.111090] radeon 0000:0a:00.0: WB enabled
[ 1406.111093] radeon 0000:0a:00.0: fence driver on ring 0 use gpu addr 0x0000000080000c00 and cpu addr 0xffff88009ae5bc00
[ 1406.111094] radeon 0000:0a:00.0: fence driver on ring 1 use gpu addr 0x0000000080000c04 and cpu addr 0xffff88009ae5bc04
[ 1406.111096] radeon 0000:0a:00.0: fence driver on ring 2 use gpu addr 0x0000000080000c08 and cpu addr 0xffff88009ae5bc08
[ 1406.111097] radeon 0000:0a:00.0: fence driver on ring 3 use gpu addr 0x0000000080000c0c and cpu addr 0xffff88009ae5bc0c
[ 1406.111098] radeon 0000:0a:00.0: fence driver on ring 4 use gpu addr 0x0000000080000c10 and cpu addr 0xffff88009ae5bc10
[ 1406.305207] [drm] ring test on 0 succeeded in 1 usecs
[ 1406.305213] [drm] ring test on 1 succeeded in 1 usecs
[ 1406.305218] [drm] ring test on 2 succeeded in 1 usecs
[ 1406.305226] [drm] ring test on 3 succeeded in 4 usecs
[ 1406.305233] [drm] ring test on 4 succeeded in 4 usecs
[ 1406.305294] [drm] ib test on ring 0 succeeded in 0 usecs
[ 1406.305347] [drm] ib test on ring 1 succeeded in 0 usecs
[ 1406.305399] [drm] ib test on ring 2 succeeded in 0 usecs
[ 1406.305412] [drm] ib test on ring 3 succeeded in 0 usecs
[ 1406.305424] [drm] ib test on ring 4 succeeded in 0 usecs
[ 1406.305677] [drm:si_dpm_set_power_state] ERROR si_upload_sw_state failed
I know the GPU is being used because the vgaswitcheroo shows it as DynPwr when I run apps with it.
What I would expect to see is performance AT LEAST as good as integrated GPU, instead I get a very bad performance. The poor perfomance is also observable when I run Unity 3D editor (with DRI_PRIME=1) in terms of screen tearing and system freezing. I also tried running the game with vblank_mode=0 option but it had no effect on performance.
The scenario is similar with any app I run with DRI_PRIME=1 and it's mostly noticeable with screen tearing.
Kernel version: Linux debian 3.16.0-4-amd64 #1 (closed) SMP Debian 3.16.7-ckt25-1 (2016-03-06) x86_64 GNU/Linux
I have searched tons of forum threads and websites and I couldn't find a solution (there were some similar open and unresolved threads but nothing useful), so I turn to you for some hardcore professional help. Is there anything I can try to fix this? Oh, I also tried using LXDE desktop but it made no difference, the problems were the same. Let me know if you need other logs and outputs in order to figure this thing out. I am more than happy to help.
Thank you in advance,
Marko.
P.S. Forgive me if I've post this to the wrong package thread but it definitely has something to do with DRI/radeon/xserver package(s).