LINUX.ORG.RU

Сравнение графических стеков Linux и Windows

 , , ,


4

4

Помолясь, несколько месяцев назад я приступил к изучению графических стеков разных ОС. Тема эта достаточно сложна, особенно если изучать иксы. Даже по словам их разработчиков есть только три человека в мире, которые знают, как работает xorg. Поэтому в его устройство я особенно не лез, только поверхностно опишу его тут. Также я, в связи с недавними новостями, не лез в устройство Mir. Поэтому в основном в части статьи, касающейся Linux речь пойдет о новом протоколе Wayland, о его клиентах и композиторах.

Linux

Итак, целью введения Wayland было упрощение архитектуры, по сравнению с иксами. В концепции Wayland оконный менеджер, или как его называют в терминологии Wayland, композитор не занимается рисовательством сам. Он лишь достает из DRM или KMS фреймбуфер и отдает их приложению, которое уже рисует в этот буфер, что хочет и чем хочет, хоть с помощью cairo, хоть с помощью OpenGL (обычно еще через EGL, платформонезависимое API между OpenGL и приложениями. Теоретически может быть использовано хоть на маке, хоть на винде.). *Необходимо помнить, что Wayland собственно является лишь протоколом для связи между клиентами и композиторами, и поэтому все нападки, вроде «гигантский толстый жирнющий мегавяленд» являются не более, чем профанацией.* Далее уже композитор может делать с полученным от клиента буфером все, что угодно. *Например, повращать на кубике. Или разместить его на шаре, зеркально отражая при этом остальные фреймбуферы. Вам же хочется видеть окошки на шарике?* Также композитор не делает лишних телодвижений с событиями, которые были в xorg, и просто подхватывает через libinput события из evdev. Теперь не будет адских проблем с мультитачем.

Самое интересное, что поверх Wayland-композитора можно запустить сервер X. Это называется X-wayland и сделано для поддержки совместимости со старыми приложениями.

А что происходит, спросите вы, когда mesa получает задание отрендерить картинку? Через драйвер и DRM она общается с железом и рендеринг происходит аппаратно.

Разумеется, все это в случае с дровами свободными. В случае блоба ничем помочь, к сожалению, не могу.

Windows

Разобраться в графике Windows было намного сложнее по причине закрытости оной. Благо многие основные принципы есть в открытом доступе и здесь я расскажу про WDDM — архитектуру драйверов, позволяющую отображать рабочий стол посредством Direct3D. У этой модели есть несколько очень неплохих преимуществ.

  • Параллельное использование ресурсов графического процессора Путем разделения графической памяти и графического процессорного времени в соответствии с приоритетами приложений.
  • Виртуализация памяти Здесь это означает, что ни один процесс не может видеть память другого, в том числе и не может иметь доступа к видеопамяти. Также, если видеопамять переполнится, неиспользуемая ее часть будет записана на диск. Это может произойти при открытии множества окон, ведь по сути, рабочий стол в Windows начиная с Vista — 3D-приложение.
  • Независимая от разработчика планировка Раньше разработчик каждого драйвера по-своему реализовал планировку приложений, требующих графического процессора. Теперь WDDM делает это сам, при помощи своего исполняемого модуля.

Сравнения:

Преимущества Linux:

  • Легкая удаленная работа. Сетевая прозрачность протоколов X11 и Wayland позволяет легко работать с удаленным сеансом.
  • Настройка режима дисплея внутри ядра(KMS) позволяет получить высокое разрешение в консоли.
  • Открытая реализация OpenGL позволяет создавать свободные драйвера ядра, не задумываюсь о юзерспейсной части.

Преимущество Windows:

  • Стабильность. При падении драйвера в Windows он просто перезапустится, а в Linux упадет вся система.

К сожалению, про macOS я ничего не нашел. Кому не жалко, могут поделиться ссылкой.

ибо я уже почти отошел

Лорчан не достоин твоего внимания.

commagray ★★★★★ ()
Ответ на: комментарий от no-such-file

Пускают, но там правила тупые.

ЗЫ: Если нет ничего сказать по делу, иди с миром.

Valmanchik ()

И это сравнение, называется? Язабан.

Dark_SavanT ★★★★★ ()

Самообразование - это всегда хорошо. Только зачем копипастить вики?

Это же лор, а не хабра. Если бы вы принесли какие-то тонкости работы того же wayland, мол, вот как он хитро может, а X-ы так не могу, - вот это было бы интересно.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Только зачем копипастить вики?

Скинь мне ссылку на статью с википедии, где это описано.

какие-то тонкости работы того же wayland

Композитора? Библиотеки? Ты давай конкретнее, статью-то и я допилить хочу.

Valmanchik ()
Ответ на: комментарий от Valmanchik

Скинь мне ссылку на статью с википедии, где это описано.

https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)

Тут текста раз в 10 больше, чем у вас.

Ты давай конкретнее, статью-то и я допилить хочу.

Что конкретнее? Я потребитель, а не создатель. Вы мне рассказывайте.

RazrFalcon ★★★★★ ()

ибо я уже почти отошел

Судя по тексту, ты уже почти отошёл в лучший мир от интоксикации спиртосодержащими жидкостями. «Ну выпил литр, ну два, ну три, но зачем же напиваться?» ©

redgremlin ★★★★★ ()
Последнее исправление: redgremlin (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Куча воды там очевидной, вроде того, что вялендопротокол использует таки IPC. По делу у меня примерно столько же.

Valmanchik ()

Нифига не понял где тут сравнение. Описание упрощенное - вижу. Сравнение - не вижу. Да и описание виндового варианта тоже какое-то скудное, где-то я и побольше/подробнее видел.

StReLoK ☆☆ ()

это реферат, курсовик или диплом?

x4DA ★★★★★ ()
Последнее исправление: x4DA (всего исправлений: 1)
Ответ на: комментарий от StReLoK

где-то я и побольше/подробнее видел

man убирание воды из текста

Я смотрел в кучу разных источников, и в основном там водичка вроде «новая концепция драйверов привнесла в основном положительные изменения для конечного пользователя». Об этом я писать не будут.

Ну а про сравнение, собственно, я уже говорил.

Valmanchik ()
Ответ на: комментарий от RazrFalcon

Если бы вы принесли какие-то тонкости работы того же wayland, мол, вот как он хитро может, а X-ы так не могу, - вот это было бы интересно.

Из того, что мне больше всего нравится и что все уже, наверное, давно знают, это то, что с устройствами ввода работает композитор, а не отдельная сущность в виде X-сервера, поведение которой захардкожено. Это даёт две возможности:

  • Во-первых, если пользователь совершает, например, клик мышкой, композитор лучше знает, в какое окно его направить и в какую именно точку этого окна, особенно если окна расположены как-то нестандартно (на том же кубе, например). В случае X-сервера композитный оконный менеджер не находится посередине между устройством ввода и клиентом, и тут X-сервер решает, какому клиенту и в какую точку послать этот клик, но он не знает, как на самом деле хитро расположены окна, и сделает это неверно.
  • Во-вторых, насколько я понимаю, композитор в случае wayland может и управлять курсором. Например, если при ресайзе окна мышкой мы дошли до минимального размера, остановить курсор в этой точке и не позволять ему двигаться дальше.

Пост автора не содержит в себе никакого сравнения, просто очень поверхностное описание wayland и ещё более поверхностное перечисление нескольких фич WDDM. Особенно понравились «преимущества» WDDM: многозадачность и «ни один процесс не может видеть память другого». Может, я чего-то не понимаю, но разве в линуксе не всегда так было?

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Может, я чего-то не понимаю, но разве в линуксе не всегда так было?

Может я про видеокарты и сравнение его с икспишнутыми бсодящимися дровами?

Valmanchik ()
Ответ на: комментарий от StReLoK

Эээ, нет. Я не буду расписывать тонну преимуществ вяленда перед иксами, ибо для этого одной статьи не хватит, да и есть уже такая на лоре.

Valmanchik ()
Ответ на: комментарий от Valmanchik

Из-за кривого костыля еще видео дергались в малэкранном режиме при прокрутке страницы в браузере, например.

Valmanchik ()

Что все на человека накинулись? Ну с первого захода информативно не получилось, пусть развивает тему. Тема интересная, вдруг сумеет доработать, если не затопчут

vaddd ★★ ()
Ответ на: комментарий от vaddd

Жду сандерланда по касту, он скажет, где ошибки, если таковые имеются.

Valmanchik ()
Ответ на: комментарий от Valmanchik

Куда меньше?

Как куда?! В баню к Narkoman228, Valman, Valman_New и т.д.

BceM_IIpuBeT ★★☆☆☆ ()
Ответ на: комментарий от anonymous

Да ладно вам. Видно что человек для чего-то старался, интерес имеет, поверхностный обзор для домохозяеек уже написал. Че гнобить?

vaddd ★★ ()
Ответ на: комментарий от vaddd

Он не старается, а просто набивает скор копипастом. И уже не первый, не во второй и не в десятый разы.

anonymous ()
Ответ на: комментарий от Valmanchik

Дополняй@улучшай, если вы нашли в статье ошибку, говорите.

в опубликованном в топикстартовом аннонсе не удалось найти ссылку на статью.

Einstok_Fair ★★☆ ()

Хоть и сижу на линуксах, ибо устраивает больше, нежели оффтопик, но оффтопик-де поотзывчивее будет - окошечки там, клики, все такое. Не знаю, связано ли это с различиями в графических стеэках или с моей криворукостью в плане настройки онтопика, но факт есть факт - искаропки оффтопик отзывчивее.

SuoiCat ()
Ответ на: комментарий от SEInterix

Он хочет в толксы. Там побольше скора надо. Надеюсь что он не будет опять копипастить с опеннета. Хоть и зря.

anonymous ()
Ответ на: комментарий от Valmanchik

Не проецируй.

Проецируете свой неадекват здесь только вы.

anonymous ()
Ответ на: комментарий от Valmanchik

Куда меньше? У меня даже толксов нет, хнык-плак.

Ван нечего делать в толксах.

anonymous ()
Ответ на: комментарий от Valmanchik

Я не буду расписывать тонну преимуществ вяленда перед иксами

Нет, не вы.

anonymous ()
Ответ на: комментарий от EXL

Лорчую. Явный пример того, что эволюционный путь развития иногда хуже других.

Twissel ★★★★★ ()

Дополнение:

В Виндовс драйвер делится на 2 части - ядерную и юзверьскую. Драйверная часть ничем иным, кроме как манипуляциями с памятью и дерганьем видимокарты по приказу юзверьской части не занимается.

Ядерная часть _должна_ выдерживать падение юзверьской и реинициализировать карту при перезапуске юзверьской части. При этом убиваются все текстурки в видеопамяти.

И про вяленый:

У него тоже есть «Виртуализация памяти», и процесс не может подсмотреть в видеопамять другого (исключение - если менеджер дисплея сам ему такую возможность предоставит, например для записывания видео)

timdorohin ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.