Bug 196637

Summary: AMD Polaris: HBR audio not working (no Atmos/True-HD/Master Audio)
Product: Drivers Reporter: Direx (direx)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: RESOLVED MOVED    
Severity: normal CC: direx, lethalwp, russianneuromancer, tiwai
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: amd-staging-drm-next Subsystem:
Regression: No Bisected commit-id:
Attachments: /proc/asound/cards
/proc/asound/HDMI/codec#0
/proc/asound/HDMI/eld#0.0

Description Direx 2017-08-10 17:32:41 UTC
Created attachment 257869 [details]
/proc/asound/cards

The current  amd-staging-drm-next kernel tree has HDMI/DP audio support in amdgpu but at the moment it seems that the ALSA-part is lacking support for high-bitrate audio. The driver only handles PCM and some older audio formats correctly.

What does not work is pass-through of HBR audio (Dolby True-HD,  Dolby Atmos, DTS-HD MA, DTS:X). When sending HBR audio through a AMD Polaris+ card over HDMI only bad noise is coming from my *internal speakers* (not the speakers connected through HDMI), although the pass-through device is set to HDMI1.

Pass-through itself is working fine with DD and DTS audio.

The audio player is Kodi with ALSA backend on Arch Linux.

I have also reported the issue against the amdgpu driver here [1], but it seems that it is actually an ALSA issue.

[1] https://bugs.freedesktop.org/show_bug.cgi?id=101900
Comment 1 Direx 2017-08-10 17:33:37 UTC
Created attachment 257871 [details]
/proc/asound/HDMI/codec#0
Comment 2 Direx 2017-08-10 17:34:11 UTC
Created attachment 257873 [details]
/proc/asound/HDMI/eld#0.0
Comment 3 Takashi Iwai 2017-08-10 17:56:12 UTC
Well, this should be done by someone who has the spec of AMD HDMI codec implementation and the hardware to test...

The current driver already supports HBR for AMD chips, and according to the codec vendor ID, it looks like the working one.  The driver sets up HBR bit via the vendor-specific codec verb, in function atihdmi_pin_hbr_setup().
You can check whether this gets called correctly at least by adding some debug prints or so.
Comment 4 lethalwp 2017-12-05 10:48:10 UTC
- bumping this thread.
kernel 4.15-rc2 with dc activated for polaris

Still no HBR amdgpu's.

Tried with RX480 & RX550

But i have some worse experience than Direx:
 - Stereo works fine
 - dolby ac3 works fine
 - dts works fine

What doesn't work for me:
 - video+LPCM 5.1 48Khz doesn't work fine (static noise added to the sound, like the bandwith is limited or not optimal scheduling or something?)

 - Dolby Plus also has problems & stutters

 - No Dts-hd, no Dolby TrueHD as previously said.
Comment 5 lethalwp 2018-01-21 19:43:05 UTC
The UVD polaris firmware update from 18 of january 2018 solves my problems:
the LPCM & DTS sound is normal now.

Still missing are high bitrate codecs (dts-hd etc).

The RX cards can finally serve as HTPC cards!
Comment 6 lethalwp 2018-01-22 09:14:43 UTC
After more tests, i have a small race condition on my systemctl setup which causes X to be unable to load the "amdgpu" driver and fallbacks on "modesetting" instead.

In this case, the videocard can't use vdpau anymore, so it's fully software decoding. Then the sound is playing perfectly.

When X is loading the amdgpu driver, the sound problems are still present. The video must eat the sound bandwidth or something (?)

Actually on "4.15.0-999-generic #201801102100"
Comment 7 Direx 2018-03-07 20:34:52 UTC
(In reply to Takashi Iwai from comment #3)
> Well, this should be done by someone who has the spec of AMD HDMI codec
> implementation and the hardware to test...

You are right, it turned out that this is not an ALSA issue. It was an issue in the AMD driver, see:

https://bugs.freedesktop.org/show_bug.cgi?id=101900