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 я ничего не нашел. Кому не жалко, могут поделиться ссылкой.



Последнее исправление: Valmanchik (всего исправлений: 2)

Сравнил жопу с пальцем...

И да, вяленый — говно. Зачем ты вообще об этом?

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

Что за бред? Только что проверил в обычных иксах: перемещаю окно, курсор все там же! Куда он, нафиг, денется?

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

процесс не может подсмотреть в видеопамять другого

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

//Завтра допилю, сёдня спать.

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

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

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

Не вижу. Просто указал в особенностях WDDM. Ладно, дай поспать.

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

Виртуализация памяти Здесь это означает, что ни один процесс не может видеть память другого, в том числе и не может иметь доступа к видеопамяти. Также, если видеопамять переполнится, неиспользуемая ее часть будет записана на диск. Это может произойти при открытии множества окон, ведь по сути, рабочий стол в Windows начиная с Vista — 3D-приложение.

Аналогичный пункт и к вяленому, иначе предвзято получается...

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

Только у говномастдайки иксы встроены в ведро. Поэтому если я накосячу с кудой в мастдайке, придется перегружать комп. А если накосячу в линухе, тупо нажать ctrl+al+backspace! И никакие демоны от этого не пострадают! Апач продолжит работать с клиентами, профтпд — раздавать данные по фтп…

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

4.2, давно уже нет. А у тебя под линем не драйвер падает, а иксы, это разные вещи. (упал бы драйвер - и SysRq не помог бы, по своему опыту знаю)

Если у тебя упадет драйвер в винде, а она не сможет его восстановить (из-за твоего кривого приложения с cuda, которое продолжит висеть) то программы останутся работать. И ssh продолжит работать тоже.

ЕМНИП, у меня такое было из-за кривого патча к скайриму. Решилось без перезапуска убиванием taskkill'ом skyrim.exe через telnet, который я таки забыл закрыть.

Пришлось тогда долго думать, т.к. раньше такого не делал, однако спас загрузку файла с неподдерживающего докачку.

А, и пришлось кабель из видеокарты выдернуть и вставить обратно, иначе чего-то не хотел перезапускаться драйвер...

timdorohin ★★★★
()
Последнее исправление: timdorohin (всего исправлений: 1)

При падении драйвера в Windows он просто перезапустится

Хотелось бы об этом поподробнее. Когда-то в Win NT 3.51 видеодрайвер работал в юзерспейсе, и так и было. Но, начиная с NT 4, его вставили в ядро, - иначе тормознуто. А сейчас что, он снова в юзерспейсе работает или что-то ещё?

А вообще тема интересная и на мой взгляд куда познавательнее, чем скриншоты разных обоев в галерее. Но почему-то они никого не раздражают, а сравнение Linux vs Windows людям отчего-то не нравится. Не понимаю я их.

Однако на статью, даже поверхностную, не тянет. Даны несколько очень общих тезисов практически ни о чём и выводы, никак не вытекающие из этих тезисов. Если уж писать подобный обзор, то нужно действительно разобраться во внутренней работе X-сервера (всё-таки он пока в Linux'е используется чаще wayland'а), wayland'а и Windows. Ну и отделить мух от котлет, то бишь дрова от интерфейса.

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

В том числе и за режущую глаза аватарку.

Deleted
()

Windows

Виртуализация памяти Здесь это означает, что ни один процесс не может видеть память другого, в том числе и не может иметь доступа к видеопамяти

а что, где-то это не так?

MyTrooName ★★★★★
()

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

Это чо, кто-то проплатил форсинг вот этой идиотской лажи? Уже раз в 10 встречаю эту дебильную мантру на ЛОРе, которая ничего общего с реальностью вообще не имеет и является наглым звездежом.

В венде при падении видеодрайвера в любом случае наступает полный и необратимый звездец. Если вынесло корявое ядрёное говно - то BSOD во все поля без вариантов. Если вынесло юзерспейсную часть - то в лучшем случае все примитивы херятся, формально оно продолжает шевелиться, мыргать квадратиками и рисовать с произвольным смещением курсор мыши в виде флага говнистана, оставляя на похеренном экране следы, а чаще гуйня просто перестаёт отвечать и с этим невозможно что-то сделать, ибо никакого Ctrl+Alt+Backspace или Ctrl+Alt+Fxx в венде не предусмотрено, а убиваемые при Ctrl+Alt+Del вендоприложения не получают никаких SIGTERM. Ничего сохранить и т.п. просто невозможно.

Чисто теоретически, в лабораторных условиях наверно можно перезапустить юзерспейсную часть вендодрайвера, но это надо очень сильно постараться и обладать недюжинными познаниями в undisclosed internals. Случайно, да ещё и при каких-то сбоях и падениях - это просто невозможно.

С точки зрения API GDI32 (который и используется для рисования окошек) - это вообще калька Х-ового API вплоть до набора битовых операций при блите с добавлением некоторых уродств и сокрытием всех полезных структур типа DC от программиста. Далее, там костыли на костылях подпираемые костылями и завершает весь этот гнилой бутерброд всякие DD D3D и прочее убогое непотребство прикрученное сбоку и прибитое километровыми гвоздями через все эти костыли микрософтом. И всё это DirectShit - только ради того, чтобы не использовать нормальные документированные OpenGLи и прочая. А уж что эти идиоты творят со своим многострадальным тулкитом на протяжении последних версий венды - ваще пипец. «А давайте уберём в васьмёрачке из TreeView мультиселект!»...

В общем, если специально сесть и постараться придумать наиболее угрёбищный многооконный графический стек и тулкит к нему, то ничего хуже вендовой гуйни придумать просто невозможно.

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

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

Никому - это тебе?

Судя по комментариям, таки не только мне.

Интересно почитать

Вчера алфавит доучил? На эту тему уже дцать лет существует литература, тонны статей, гигабайты сообщений. Щас бы начать читать флуд наркомана который «отошёл».

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

Ты тупой что ли? Я говорю: в говномастдайке иксы встроены в ведро, поэтому при падении иксов все ведро кирдык.

программы останутся работать

Да что ты говоришь! Ну, будут они работать, а пол-экрана — черным залито, потому что я ступил с доступом к памяти =D

anonymous
()

В линуксах экскременты мамонта в роли видеосистемы.

Иксы и нормально шорткаты не умеют, их уже просто плющит на хай рез разрешениях, вечный тиринг, костыльная работа с гибридными графиками, около нулевая безопасность так как легко снифать ввод других приложений, и скринлокеры выводятся зачастую после некоторой паузы (смотри на мой экран, мне скрывать нечего)

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

Ещё забавляет блокирование ввода для всего десктопа при открытии контекстного меню и отсутствие глобальной настройки скорости прокрутки колесом мыши, всюду свой велосипед или просто нет возможности.

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

Дебич, в масдайке давно(с семёрки емнип) видеодрайвер рестартует/переустанавливается без закрытия программ.

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

Почему тогда эти мудаки не оторвали иксы от ведра?

Скажем, есть кони, которые мастдайку в качестве сервера используют. На кой им там иксы?

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

Это чо, кто-то проплатил форсинг вот этой идиотской лажи? Уже раз в 10 встречаю эту дебильную мантру на ЛОРе, которая ничего общего с реальностью вообще не имеет и является наглым звездежом.

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

tcler
()

Налицо желание тупо похвастать какими-то знаниями. Ниочём. Ятожезабан.

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

Проснитесь, вы в 2017, и сейчас windows - не xp. Как минимум начиная с 8 винды ( а возможно и с висты) при перегреве, критической ошибке видеодравера, пропаже питания итд на оффтопике просто появляется черный экран на пару секунд и видеодрайвер снова живой. Да конечно он похерит всё и вся что было в видеопамяти, но он сделано специально, ибо мало ли. А этот пердежь в лужу и стена текста которую ты накатал, выглядит как бред фанатика.

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

А про рестарт драйвера - это тебе кто такую херню сказал? Ты вообще в курсе, что происходит? Абсолютно то же самое ты увидишь, если, например, шнурок к монитору рваный.

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

Как минимум начиная с 8 винды ( а возможно и с висты) при перегреве, критической ошибке видеодравера, пропаже питания итд на оффтопике просто появляется черный экран на пару секунд и видеодрайвер снова живой.

Да-да-да. Откуда эта информация? Чёрный экран на пару секунд - это в 99% говённые HDMI детальки, от микрухи шинного драйвера до шнурка и разъёмов. Даже глючный конвертер HDMI-VGA давал точно такую же картину. Для системы - пропадает монитор, потом типа снова появляется.

А вот если в видеодрайвере баг или видимокарта сглючила - хрен там чего перезапустится. Будет в лучшем случае аццкое глюкалово или просто всё повиснет, без возможности оживить, либо BSOD. Хоть в васмьорочке, хоть в такой же сраной дисьяточге.

Да фигли - ткни отвёрткой в шину адреса видеопамяти на карточке (чтоб GPU чего-нибудь не то выполнило) - и посмотри как оно у тебя «перезапускается при сбое».

Кто-то из вендоламерья где-то что-то маркетоидное услышал про якобы перезапускающийся видеодрайвер, и понеслась. Тупо проверить рекламный звездёж на своей железке - хрен кто удосужился. Впрочем чего от вендузятников ждать...

Это я ещё молчу про вызовы некоторых функций GDI32 с неверными параметрами. Даже от этого васьмьёрочга ваша сраная в BSOD вываливается на ура без всякой там «перегрузки драйвера». :)

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

Не трынди, это легко проверить нестабильным переразгоном видеокарты. Правда таки бывает иногда, что виснет совсем.

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

Да-да-да. Откуда эта информация? Чёрный экран на пару секунд - это в 99% говённые HDMI детальки, от микрухи шинного драйвера до шнурка и разъёмов. Даже глючный конвертер HDMI-VGA давал точно такую же картину. Для системы - пропадает монитор, потом типа снова появляется.

Ламерье, я на ноутбуке, у меня lvds. И падал он у меня из за перегрева и бага в чипе который проявлялся при большой нагрузке через cuda.

Это я ещё молчу про вызовы некоторых функций GDI32 с неверными
параметрами. Даже от этого васьмьёрочга ваша сраная в BSOD
вываливается на ура без всякой там «перегрузки драйвера». :)

Исправлено еще в 2013 году. Советую поумерить чсв и понять что ламер тут ты.

Solexid
()

Как-то lovesan обмолвился, что хорошо знает как работает графическая подсистема Windows.

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

Черный экран на 5-10 секунд и сообщение винды «Видеодрайвер был восстановлен» говорит само за себя.

И да, у меня драйвер перезапускается. Если ваша VIA ниасилила написать его нормально - ваши проблемы. Intel/AMD/Nvidia умеют это и активно используют (например при dual graphics)

ткни отвёрткой в шину адреса видеопамяти на карточке

От аппаратных багов ничего не спасет, и драйвер вырубит карту от такого действия нафиг.

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

Если совсем, то это железные проблемы. Можно еще запустить ssh перед этим, и проверить жива ли машина после зависона. Вангую что зависает только графика.

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

Черный экран на 5-10 секунд и сообщение винды «Видеодрайвер был восстановлен» говорит само за себя.

Понятно. :) Бгг. Каким дебилом надо быть, чтобы доверять вендовым сообщениям об ошибках. :) Если тебе напишут, что «заменён неисправный процессор» или «С этой версией виндовс ваш компьютер станет работать быстрее» - ты тоже поверишь?

ЗЫ: Подёргай кабло к монитору, получишь тот же самый эффект и ту же самую надпись. VGAшный кабель, правда может что-то другое написать, но ты же не нищеброд по VGA мониторы подключать, да?

От аппаратных багов ничего не спасет, и драйвер вырубит карту от такого действия нафиг.

Ничего он не вырубит, венда грохнется в BSOD или зависнет, как и полагается венде. И никаких Ctrl+Alt+Fxx, чтоб в консольку перекинуться.

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

получишь тот же самый эффект и ту же самую надпись

4.2, hdmi/DP ничего подобного не показывают, па и переключение экрана не херит все текстуры, в отличии от падения драйвера.

венда грохнется в BSOD или зависнет, как и полагается венде

Ой, я потыкал палочкой процессор а оно зовислооо!!! Ваааааа!!!

Если ты не вкурсе, что ты можешь сделать, «потыкав отверткой» шину PCIe, нефиг шланговать.

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

Ламерье, я на ноутбуке, у меня lvds. И падал он у меня из за перегрева и бага в чипе который проявлялся при большой нагрузке через cuda.

Ноутбук с вендой, большая нагрузка, cuda. Сразу видно профессионала, который по сообщениям венды может определить что у него там с вендой происходит. :)

Не, вы чо, и правда в эту лажу рекламную верите? :)

Исправлено еще в 2013 году.

Смайлик в БСОД нарисовали? Отличное исправление. :) :) :) Прям в духе микрософта. :)

Блин, я уж и забыл, какие вендузятники смешные. А они ещё смешнее стали.

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

hdmi/DP ничего подобного не показывают, па и переключение экрана не херит все текстуры, в отличии от падения драйвера.

Ну-ну, ври дальше. Драйвер у него падает и поднимается. Ага.

Ой, я потыкал палочкой процессор а оно зовислооо!!! Ваааааа!!! Если ты не вкурсе, что ты можешь сделать, «потыкав отверткой» шину PCIe, нефиг шланговать.

А не надо тыкать в процессор или PCI. Надо тыкать в видеопамять, чтоб GPU заглючило. Это же очевидно должно быть.

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

Попробуй ткнуть и под линуксом и под виндой на одной машине. тогда и поговорим (пруф запиши на видео, иначе все твои «аргументы» > /dev/null)

Винда > 7

Пока же ты пердишь в воздух без пруфов.

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

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

Solexid
()

Также, если видеопамять переполнится, неиспользуемая ее часть будет записана на диск.

Да начнутся тормоза!

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

Ясно, значит о существовании трейслога и трейсвью в винде ты даже не представляешь?

Это убогое поделие вообще ни для чего не пригодно.

Предоставь мне код который уронит мне винду в синий экран, или ты балабол.

Такая незамутнённая непосредственность :) «Дай мне нахаляву ценность стоимостью в тыщи баксов, или ты балабол». Цирк с конями.

Если скажешь что - запустить от админа, значит обосрался.

Без разницы от кого запускать.

Хотя учитывая что пишешь с дебильными смайлами, и так ясно что ты обосрался еще до входа в тред.

Дебильные смайлы - это то, что нынче вендоюзеры на бсодах своих наблюдают.

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

Дай мне нахаляву ценность стоимостью в тыщи баксов, или ты балабол

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

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

Попробуй ткнуть и под линуксом и под виндой на одной машине. тогда и поговорим

Под линуксом обычно иксы от этого виснут. Всё остальное будет работать и систему можно хотя бы корректно зашатдаунить.

(пруф запиши на видео, иначе все твои «аргументы» > /dev/null)

Вот оно, безрукое и безмозглое поколение ютуберов. :) Ты хоть понимаешь, что наснимать можно вообще чего угодно?

Винда > 7

Ага. Сначала было «А вот покажите мне ... только чтоб Винда > NT4.0», потом Винда > XP, Винда > Vista и т.д. И ведь ничего так и не меняется. :) Как было глючное архитектурно убогое говно которым невозможно пользоваться ни для чего кроме запуска игрушек, так и осталось.

Пока же ты пердишь в воздух без пруфов.

Пердят в воздух те, кто сообщения венды и рекламу принимает за чистую монету.

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

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

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

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

Могу только эвтаназепам прописать, больше нет вариантов.

Ну конечно же нету. Это единственный для тебя вариант не выглядеть убого - только если собеседник куда-нибудь денется.

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

Что nouveau, что i915 способны поставить систему раком. И виснут не иксы, а ядерный драйвер. Да, он может отдуплиться (замечено за i915) а может и нет (привет, nouveau на Ion2!)

И при чем тут, кстати, иксы, когда драйвер в ядре? (иначе ты не получишь красивой картинки в консоли)

Ты хоть понимаешь, что наснимать можно вообще чего угодно?

Набздеть можно еще больше, продолжай рассказывать про мифические вешающие все команды GDI32 которые ты нам не покажешь.

Ага. Сначала было «А вот покажите мне ... только чтоб Винда > NT4.0», потом Винда > XP, Винда > Vista и т.д.

Вообще-то WDDM появился в Vista, но я с ней не так много работал, чтобы что-то о ней говорить. А вот падения AMD'шного драйвера под w7 были неоднократно. И да, система его перезапускала и продолжала работать.

Кстати, один из характерных симптомов падения - вентилятор на видеокарте в 100% мощности уходил, и за секунду-ругую до восстановления картинки на мониторе возвращался в обычный режим.

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

Вообще-то одним из основных источников дохода у меня является написание коммерческого энтерпрайзного софта под венду для работы с весьма нетривиальными измерительнми приборами.

Говнопроэкты из говна и палок в говнобложике

Яснопонятно, проходите дальше.

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

Вообще-то одним из основных источников дохода у меня является написание коммерческого энтерпрайзного софта под венду для работы с весьма нетривиальными измерительнми приборами
В бложике осциллограф из говна и говна.

4.2

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

Что делает безмозглый вантузятник на моем ЛОРе? Пшел нах отсюда!

anonymous
()

ожидал увидеть внутре то, что было написано на обертке. А вместо этого мы видим почему то кое-как нагуглённые соображения на тему «вот тут нагуглил а вот тут навыдумывал».

Значит так, смотрите как оно в принципе устроено. Есть видеокарта, для примера это радеон. У неё есть PCI-интерфейс, который умеет в bus-mastering, irq и прочие умные штуки. На борту видеокарты обычно есть оперативка, которая со стороны процессора не видна. Для эмуляции vga есть зона памяти (которая видна со стороны pci), которая отбражается каким-то способом на оперативку видеокарты. В радеонах это 128мегабайт, лежащие одним шматом. Место куда именно отображаются эти адреса можно настроить.

Далее, для работы в нормальном режиме есть специальный процессор, который читает из буфера в памяти компа пакеты, запускает по командам в пакетах задачи, помечает в выделенной памяти(у радеонов это scratch memory размером 4кб) что сделал ту или иную задачу и вызывает irq если стоит флажок.

Память в видеокарте выделяется в виде буферов, которые может перегонять в озу и обратно dma engine. Для управления памятью видеокарта имеет свой mmu. Обычно mmu поддерживает несколько параллельно работающих задач(т.е. такой mmu с hyperthreading). На hd5000-hd6000 их 8, на SI - 16. У каждой задачи своя отдельная таблица адресов. Линуксовый драйвер использует только одну задачу. MMU может смотреть и в память компьютера.

Собственно, у задачи есть некое линейное адресное пространство, куда какбы маллоком выделяется память, и возможность запустить шейдер, сообщив ему где именно в линейном адресном пространстве лежат ресурсы. Дополнительно на конкретный буфер можно натравить блок вывода на монитор. То есть пакет (см выше если забыл о чем речь) ссылается на «задачу», и «шейдер», который надо выполнить. Как только он отработал, появляется пометка в памяти, и если надо irq.

Собственно это всё, что надо в рамках графического стека знать о видеокартах, т.к. детали могут различаться но общая часть остаётся одна и та же.

Далее у нас идет линукс и DRI. В DRI2 одно приложение открывает DRI в режиме сервера и по запросу через IPC создает секретный пароль, говорит DRI создать новый контекст(с указанием пароля), и передает пароль клиенту. Тот открывает DRI и сообщает пароль. После этого он может мутить графон. Для обмена данными с другими приложениями сделаны экранные буфера. Это такая очередь 2x fifo - в одну сторону идут отрисованые буфера, в другую поюзаные и ненужные. double buffering это fifo из всего двух буферов. Вместо него чтоб не тупить юзают triple buffering. Кто не понял почему тот лох. Чтоб получить больше буферов надо попрошайничать у иксов. При этом DRI2 является типовым решетом.

В DRI3 костыльный пароль убрали, и вроде как передают fd через unix socket. Все буфера выделяются самостоятельно, есть своя очередь рендеринга, сиречь запихивания пакетов в видеокарту. Далее идет библиотека opengl которая пытается в DRI засылать конкретные команды. По сути она собирает те самые пакеты, о которых шла речь выше, и ставит их в очередь. Ну и ioctlами пытается создавать и удалять буфера. В винде так же как в DRI3. Там например swapchain на 31 посадочное место вместо double-triple-buffering как в DRI2. Пакеты там прямо в ядре шедулятся, там планировщик видеокарты есть, если вы не знали. По сути под винду все видяхи и пилятся, ибо там большинство геймеров сидит.

Собственно, чем wayland отличался от иксов? Иксы это DRI2. DRI3 там врубается плясками с бубном и не всегда. wayland это DRI3. То что он сделан плохо - это плохо конечно. Но иксы это шаг назад.

ckotinko ☆☆☆
()
Ответ на: комментарий от timdorohin

это не падения были а таймаут планировщика пакетов.

ckotinko ☆☆☆
()
Ответ на: комментарий от timdorohin

Что nouveau, что i915 способны поставить систему раком. И виснут не иксы, а ядерный драйвер. Да, он может отдуплиться (замечено за i915) а может и нет (привет, nouveau на Ion2!)

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

И при чем тут, кстати, иксы, когда драйвер в ядре? (иначе ты не получишь красивой картинки в консоли)

А нахрена в консоли красивая картинка?

продолжай рассказывать про мифические вешающие все команды GDI32 которые ты нам не покажешь.

Что, не вышло ништячок нахалявку-то получить? :) Обидно, да?

Вообще-то WDDM появился в Vista

Ты вообще понимаешь, что для перезапуска юзверь-части WDDM графический стек должен отдуплить, что драйвер грохнулся? Оно же не святым духом перезапускается, а индусскими костылями. А костыли могут только exception поймать, и то с переменным успехом. Я не уверен, что, например, division by zero в драйвере будет корректно обработан костылём. Кроме того, ещё и текущее состояние видеокарты и ядерного куска должны позволить перезапуск. Стечение всех этих обстоятельств - штука крайне редкая. А если учесть, что «Драйвер был перезапущен» появляется и при временных проблемах со связью с монитором, то ситуация вообще выглядит очень смешно.

Кстати, один из характерных симптомов падения - вентилятор на видеокарте в 100% мощности уходил, и за секунду-ругую до восстановления картинки на мониторе возвращался в обычный режим.

Ничего удивительного - отвалился на секунду монитор, «конфигурация видео на Этом Компьютере» изменилась, венда, разумеется, ресетит видеосистему, а инициализация видеокарты вполне может включать вентилятор на полную на какое-то время.

Да о чём говорить-то, если перетыкание USB девайса часто и непредсказуемо приводит аж к процессу поиска и установки драйверов для «обнаруженного нового оборудования». Если уж даже USB подсистема венды представляет из себя упоротое говнище, то с архитектурой видео в венде всё совсем плохо и подавно.

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

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