Vấn đề âm thanh HD trong trình điều khiển AMDGPU Nhận bản vá, DRM hiện có thể xử lý khi cắm nóng

Linux-Unix / Vấn đề âm thanh HD trong trình điều khiển AMDGPU Nhận bản vá, DRM hiện có thể xử lý khi cắm nóng 2 phút đọc

AMD



Mặc dù GPU của Radeon / AMD đã được hỗ trợ Linux tốt hơn với các mẫu GPU mới hơn, nhưng hỗ trợ âm thanh đã bị bỏ quên một cách đáng tiếc - cho đến nay. Một bản vá mới được đẩy gần đây bởi SUSE’s Takashi Iwai, người cũng duy trì hệ thống con âm thanh trong nhân chính của Linux. Mảnh vụn giải quyết một số vấn đề tổng thể với hỗ trợ âm thanh của AMDGPU.

Các vấn đề âm thanh AMDGPU hiện tại xoay quanh một số GPU để hỗ trợ âm thanh HDMI / DP bị trì hoãn do Mã hiển thị AMDGPU (DC / DAL) cần được vá vào hạt nhân, một số định dạng âm thanh không được hỗ trợ và lỗi tổng thể trong một số phần của ngăn xếp trình điều khiển. Tuy nhiên, SUSE’s Takashi Iwai đã phát hành một tập hợp các bản vá cho trình điều khiển DRM Radeon / AMDGPU.



Những gì các bản vá này làm là cung cấp hỗ trợ thành phần âm thanh DRM cho các trình điều khiển Trình quản lý kết xuất trực tiếp Radeon và AMDGPU - nói tóm lại, chế độ thành phần âm thanh DRM cho giao diện HDMI và DisplayPort sẽ cho phép cắm nóng âm thanh và đọc ELD, không có quyền truy cập phần cứng . Về cơ bản, điều này có nghĩa là nó có thể được cho phép xử lý đúng phích cắm nóng, ngay cả khi hệ thống đang ở chế độ tạm ngừng trong thời gian chạy. Tuy nhiên, các đường dẫn mã AMDGPU DC không được đặt đúng với nhau trong biểu mẫu bản vá hiện tại.



Vì vậy, về cơ bản, chỉ có Radeon và một phần của AMDGPU được giải quyết bằng bản vá - Hỗ trợ DC chưa bao gồm.



Takashi giải thích sâu về các bản vá lỗi bên dưới:

Trình điều khiển codec HDMI của AMD / ATI không có liên kết thành phần âm thanh như i915, nhưng nó chỉ hoạt động với sự kiện không mong muốn HD-audio truyền thống để phát hiện phích cắm HDMI và đọc ELD sau đó. Đây là một vấn đề theo nhiều cách: trước hết, nó trải qua quá trình chuyển đổi sự kiện phần cứng (từ ghi thanh ghi GPU, kích hoạt bộ điều khiển âm thanh HD và cuối cùng là xử lý sự kiện không mong muốn của âm thanh HD), thường không đáng tin cậy và có thể bỏ lỡ một số cơ hội. Thứ hai, mỗi xử lý sự kiện không giải quyết được và đọc lên ELD cần tăng / giảm sức mạnh rõ ràng khi codec ở trong thời gian chạy tạm ngưng. Cuối cùng nhưng không kém phần quan trọng, là điều quan trọng nhất, việc đánh thức phích cắm nóng có thể bị bỏ qua khi bộ điều khiển âm thanh HD ở trạng thái tạm ngừng thời gian chạy. Đặc biệt điểm cuối cùng là một vấn đề lớn do sự thay đổi gần đây liên quan đến vga_switcheroo buộc phải bật PM thời gian chạy cho bộ điều khiển AMD HDMI.

Những vấn đề này được giải quyết bằng cách giới thiệu thành phần âm thanh; thông báo về phích cắm nóng được thực hiện bởi một lệnh gọi lại chức năng trực tiếp, chính xác và đáng tin cậy hơn và nó có thể được xử lý mà không cần quyền truy cập phần cứng thực tế, tức là không cần kích hoạt PM thời gian chạy và HD-audio nhận được sự kiện ngay cả khi nó đang trong thời gian chạy đình chỉ. Tương tự đối với truy vấn ELD, vì nó được đọc trực tiếp từ các byte ELD được lưu trong bộ nhớ cache được lưu trữ trong trình điều khiển DRM, do đó có thể bỏ qua toàn bộ quyền truy cập phần cứng.



Đây là: bản vá này thực hiện liên kết thành phần âm thanh với trình điều khiển AMD / ATI DRM. Sự khác biệt lớn nhất so với việc triển khai i915 là ràng buộc này là hoàn toàn tùy chọn và nó có thể được bật không đồng bộ khi đang di chuyển. Tức là, trình điều khiển sẽ chuyển từ sự kiện HD-audio không được yêu cầu sang sự kiện gọi lại thông báo một lần khi thành phần DRM bị ràng buộc. Tương tự, khi trình điều khiển DRM được tải xuống, việc xử lý sự kiện HDMI cũng trở lại chế độ kế thừa.

Ngoài ra, một sự khác biệt khác so với i915 là AMD HDMI đăng ký thành phần trong trình điều khiển codec, trong khi codec HDMI i915 giả định rằng việc liên kết thành phần đã được thực hiện. Do đó, mã AMD cũng không đăng ký liên kết thành phần ở lối ra codec. '