При обсуждении ошибки, связанной с относительно высоким по сравнению с Windows потреблением электроэнергии на APU AMD с поддержкой аппаратного декодирования видео, инженер из AMD, Алекс Дойкер (Alex Deucher, основной разработчик драйвера amdgpu), признал, что отображение видео в Linux в принципе неэффективно.
При выводе видео в Linux сейчас используется следующая цепочка:
- Сжатый видеопоток
- VCN (модуль аппаратного декодирования видео для GPU AMD)
- Сырые YUV данные
- Конвертация палитры, масштабирование на модуле GFX (по сути 3D акселератор в GPU, что заставляет его повышать частоты работы ядра и VRAM)
- RGB данные
- Вывод на дисплей.
Как должно работать:
- Сжатый видеопоток
- VCN
- Сырые YUV данные
- Контроллер дисплея, который будет преобразовывать палитру, масштабировать и отображать.
Более эффективно это может быть решено в Wayland композиторах, но пока реализации нет. Данная проблема решена в Microsoft Windows и Google Android, ибо там есть полноценные одиночные композиторы, которые предоставляют соответствующие возможности и API – чего пока нет в Linux, потому что ни X.org, ни Wayland не могут работать с YUV-потоками напрямую.