Дзен и искусство ухода за Arch Linux (3)
3. Display Protocols детальнее.
= X11 (X.Org Server) — «Дедушка» (1984 г.)
Это классический клиент-серверный протокол.
X Server -- это программа, которая имеет монопольный доступ к видеокарте. Приложения говорят ей: "Нарисуй мне окно 500x500", сервер рисует и отправляет события обратно.
Минусы:
Любое приложение может прочитать ввод с клавиатуры любого другого окна.
При падении X Server падают все графические приложения.
Мониторы с разной частотой обновления (60 Гц + 144 Гц) работают плохо (тряска).
HDR и HiDPI -- костыли, работают через раз.
Каждое действие проходит длинный путь (App - X Server - GPU).
= Wayland — «Преемник» (2008 – н.в.)
Это протокол, а не программа. "Композитор" (например, KWin, Mutter, Sway, Hyprland) сам является сервером. Приложение говорит композитору напрямую: «Дай мне участок памяти (buffer), я сам туда нарисую», композитор просто собирает эти буферы и отправляет на экран.
Почему круто:
Приложение не видит ввод других окон.
Путь короткий (App - Compositor - GPU).
Каждое окно рендерится с собственной частотой.
Нет разрывов по определению (если приложение не просит explicit sync).
Почему это уровень стека, а не просто галочка? В большинстве ОС (Windows, macOS, Ubuntu) выбор протокола скрыт от пользователя. А в Arch вы выбираете это сознательно! :)
Вы не ставите «видеодрайвер» и радуетесь, вы выбираете стек:
sudo pacman -S sway wayland libinput mesa
Если вы поставите проприетарный драйвер NVIDIA и попробуете запустить Wayland-композитор Hyprland без настройки параметров ядра, вы получите черный экран (или артефакты).
Нужно понимать Kernel Mode Setting (KMS), Direct Rendering Manager (DRM), Explicit Sync vs Implicit Sync...
Creator has disabled comments for this post.