Masalah Audio HD dalam Pemacu AMDGPU Menerima Patch, DRM Kini Boleh Menangani Palam Panas

Linux-Unix / Masalah Audio HD dalam Pemacu AMDGPU Menerima Patch, DRM Kini Boleh Menangani Palam Panas 2 minit membaca

AMD



Walaupun Radeon / AMD GPU mendapat sokongan Linux yang lebih baik dengan model GPU yang lebih baru, sokongan audio telah diabaikan - hingga sekarang. Tambalan baru-baru ini didorong oleh Takashi Iwai SUSE, yang juga mengekalkan subsistem suara di kernel utama Linux. Tampalan menangani beberapa masalah keseluruhan dengan sokongan audio AMDGPU.

Masalah audio AMDGPU semasa berkisar pada beberapa GPU yang mempunyai sokongan audio HDMI / DP yang ditunda oleh Kod Paparan AMDGPU (DC / DAL) yang perlu ditambal ke kernel, beberapa format audio tidak disokong, dan keseluruhan bug di bahagian tertentu timbunan pemandu. Walau bagaimanapun, Takashi Iwai SUSE telah mengeluarkan satu set tambalan untuk pemacu Radeon / AMDGPU DRM.



Apa yang dilakukan oleh tampalan ini ialah memberi sokongan komponen audio DRM untuk pemacu Radeon dan AMDGPU Direct Rendering Manager - secara ringkas, mod komponen audio DRM untuk antara muka HDMI dan DisplayPort akan memungkinkan pembacaan palam panas dan ELD berlaku, tanpa akses perkakasan . Ini pada dasarnya bermaksud bahawa ia dibenarkan untuk pengendalian palam panas yang betul, walaupun sistem dalam mod penangguhan jangka masa. Walau bagaimanapun, jalur kod AMDGPU DC tidak disatukan dengan betul dalam bentuk tampalan semasa.



Jadi pada dasarnya, hanya Radeon dan sebahagian daripada AMDGPU yang ditangani oleh patch - sokongan DC belum termasuk.



Takashi menerangkan tambalan secara mendalam di bawah:

Pemacu codec AMD / ATI HDMI tidak mempunyai komponen audio yang mengikat seperti i915, tetapi hanya berfungsi dengan acara HD-audio tradisional yang tidak diminta untuk pengesanan hotplug HDMI dan pembacaan ELD selepas itu. Ini telah menjadi masalah dalam banyak cara: pertama sekali, ia melalui peralihan peristiwa perkakasan (dari penulisan pendaftaran GPU, pencetus pengawal audio HD, dan akhirnya ke pengendalian acara HD-audio yang tidak diminta), yang sering tidak boleh dipercayai dan mungkin terlepas beberapa peluang. Kedua, setiap pengendalian acara yang tidak dapat diselesaikan dan ELD read-up memerlukan power / down yang jelas ketika codec dalam proses penangguhan runtime. Akhir sekali, yang paling penting, bangun palam panas mungkin terlewat apabila pengawal audio HD dalam masa penangguhan. Terutama titik terakhir adalah masalah besar kerana perubahan baru-baru ini yang berkaitan dengan vga_switcheroo yang secara paksa membolehkan PM runtime untuk pengawal AMD HDMI.

Masalah-masalah ini diselesaikan dengan memperkenalkan komponen audio; pemberitahuan hotplug dilakukan dengan panggilan balik fungsi langsung, yang lebih tepat dan boleh dipercayai, dan dapat diproses tanpa akses perkakasan yang sebenarnya, iaitu tidak diperlukan pencetus PM runtime, dan audio HD mendapat acara tersebut walaupun dalam waktu runtime menangguhkan. Perkara yang sama untuk pertanyaan ELD, kerana dibaca secara langsung dari bait ELD cache yang disimpan dalam pemacu DRM, oleh itu keseluruhan akses perkakasan dapat dilangkau.



Jadi ini: patch ini menerapkan pengikatan komponen audio dengan pemacu AMD / ATI DRM. Perbezaan terbesar dari pelaksanaan i915 adalah bahawa pengikatan ini sepenuhnya pilihan dan dapat diaktifkan secara tidak segerak secara cepat. Maksudnya, pemacu akan beralih dari peristiwa HD-audio yang tidak diminta kepada pemberitahuan panggilan balik sekali apabila komponen DRM terikat. Begitu juga, apabila pemacu DRM dibongkar, pengendalian acara HDMI kembali ke mod lama.

Juga, perbezaan lain dari i915 ialah AMD HDMI mendaftarkan komponen dalam pemacu codec, sementara i915 HDMI codec menganggap pengikatan komponen sudah selesai. Oleh itu, kod AMD juga membatalkan pendaftaran komponen yang mengikat pada pintu keluar codec. '