W trakcie omawiania błędu związanego z relatywnie wysokim zużyciem energii przez APU AMD z obsługą sprzętowego dekodowania wideo w porównaniu do Windows, inżynier z AMD, Alex Deucher (główny twórca sterownika amdgpu), przyznał, że odtwarzanie wideo w systemie Linux jest z założenia nieefektywne.
Obecnie w systemie Linux do wyprowadzania wideo wykorzystywana jest następująca sekwencja:
- Skodowany strumień wideo
- VCN (moduł sprzętowego dekodowania wideo dla GPU AMD)
- Surowe dane YUV
- Konwersja palety, skalowanie na module GFX (w zasadzie 3D akcelerator w GPU, co powoduje zwiększenie częstotliwości pracy rdzenia i VRAM)
- Dane RGB
- Wyjście na wyświetlacz.
Jak powinno to działać:
- Skodowany strumień wideo
- VCN
- Surowe dane YUV
- Kontroler wyświetlacza, który przetwarza paletę, skaluje i wyświetla.
To można by rozwiązać bardziej efektywnie w kompozytorach Wayland, ale na razie brak implementacji. Problem ten został rozwiązany w systemie Microsoft Windows i Google Android, ponieważ tam istnieją pełnoprawne kompozytory, które oferują odpowiednie możliwości i API — czego brakuje obecnie w Linuxie, gdyż ani X.org, ani Wayland nie mogą bezpośrednio obsługiwać strumieni YUV.
Źródło: opennet.ru
