AMDGPU Sürücülerindeki HD Ses Sorunları Yama Aldı, DRM Artık Hot-Plugging'i İşleyebilir

Linux-Unix / AMDGPU Sürücülerindeki HD Ses Sorunları Yama Aldı, DRM Artık Hot-Plugging'i İşleyebilir 2 dakika okundu

AMD



Radeon / AMD GPU’lar daha yeni GPU modelleriyle daha iyi Linux desteği alırken, ses desteği şimdiye kadar ne yazık ki ihmal edildi. SUSE’den Takashi Iwai, Linux’un ana hat çekirdeğindeki ses alt sistemini de koruyan yakın zamanda bir yama yayınladı. Yama AMDGPU’nun ses desteğiyle ilgili bazı genel sorunları giderir.

Mevcut AMDGPU ses sorunları, HDMI / DP ses desteğinin çekirdeğe eklenmesi gereken AMDGPU Ekran Kodu (DC / DAL) tarafından geciktirilmesi, desteklenmeyen birkaç ses biçimi ve bazı GPU'ların bazı bölümlerindeki genel hatalar etrafında dönmektedir. sürücü yığını. Ancak, SUSE’den Takashi Iwai, Radeon / AMDGPU DRM sürücüleri için bir dizi yama yayınladı.



Bu yamaların yaptığı şey, Radeon ve AMDGPU Direct Rendering Manager sürücüleri için DRM ses bileşeni desteği sağlamaktır - kısaca, HDMI ve DisplayPort arayüzleri için DRM ses bileşeni modu, ses çalışırken takılabilir ve ELD okumalarının gerçekleşmesine izin verir. donanım erişimi olmadan . Bu, temel olarak, sistem çalışma zamanı askıya alma modunda olsa bile, çalışırken takıp çıkarmanın doğru işlemesine izin verilebileceği anlamına gelir. Ancak, AMDGPU DC kod yolları mevcut yama biçiminde düzgün bir şekilde bir araya getirilmemiştir.



Temel olarak, yalnızca Radeon ve AMDGPU'nun bir parçası yama tarafından ele alınmaktadır - DC desteği henüz değil dahil.



Takashi, yamaları aşağıda ayrıntılı olarak açıkladı:

AMD / ATI HDMI codec sürücüleri, i915 gibi ses bileşeni bağlantısına sahip değildi, ancak HDMI hotplug algılaması için yalnızca geleneksel HD-audio istenmeyen olay ile çalıştı ve daha sonra ELD okuması yapıldı. Bu, birçok yönden bir sorun olmuştur: her şeyden önce, donanım olay geçişinden geçer (GPU kayıt yazma, HD ses denetleyicisi tetikleme ve son olarak HD ses istenmeyen olay işleme), ki bu genellikle güvenilmezdir ve gözden kaçabilir bazı fırsatlar. İkinci olarak, her unsol olay işleme ve ELD okuması, codec çalışma zamanı askıya alındığında açık güç açma / kapama gerektirir. Son olarak, en önemlisi, HD ses denetleyicisi çalışma zamanı askıya alındığında çalışırken takıp çıkarmanın kaçırılması olabilir. Özellikle son nokta, AMD HDMI denetleyicileri için çalışma zamanı PM'yi zorla etkinleştiren vga_switcheroo ile ilgili son değişiklik nedeniyle büyük bir sorundur.

Bu sorunlar, ses bileşeni tanıtılarak çözülür; hotplug bildirimi, daha doğru ve güvenilir olan bir doğrudan işlev geri aramasıyla yapılır ve gerçek donanım erişimi olmadan işlenebilir, yani hiçbir çalışma zamanı PM tetiklemesi gerekmez ve HD ses, çalışma zamanında olsa bile olayı alır askıya almak. DRM sürücüsünde depolanan önbelleğe alınmış ELD baytlarından doğrudan okunduğu için ELD sorgusu için de aynısı, dolayısıyla tüm donanım erişimi atlanabilir.



İşte burada: bu yama, ses bileşenlerini AMD / ATI DRM sürücüsü ile birleştiriyor. İ915 uygulamasından en büyük farkı, bu bağlamanın tamamen isteğe bağlı olması ve anında eşzamansız olarak etkinleştirilebilmesidir. Diğer bir deyişle, sürücü, DRM bileşeni bağlandığında bir kez HD-audio istenmeyen olaydan bildirim geri aramasına geçecektir. Benzer şekilde, DRM sürücüsü kaldırıldığında, HDMI olay işleme de eski moda geri döner.

Ayrıca, i915'ten diğer bir fark, AMD HDMI'nın bileşeni codec sürücüsüne kaydetmesi, i915 HDMI codec'in bileşen bağlamanın zaten yapıldığını varsaymasıdır. Dolayısıyla AMD kodu, codec çıkışında bileşen bağlamanın kaydını da kaldırıyor. '