LINUX.ORG.RU
ФорумTalks

Почему иксы надо закопать

 ,


10

6

Как задолбало смотреть на деградантов, агитирующих сидеть на иксах. Для тех, кто хоть немного разбирается в современных GPU - иксы это дикость. Это такое же legacy как терминалы в ядре.

Так получилось, что пока SGI со товарищи занимались ИБД, и надували щеки - вот прям также, как местные ололо, «разбирающиеся в архитектуре иксов», компания микрософт день и ночь думала о том, как сделать графику быстрее. И поэтому майкрософт(а не красноглазые) придумали шейдеры. Поэтому они придумали стандарт на API для ускорения видео. Микрософт а не «опенсорс сообщество» задает направление развития графики.

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

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

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

То же самое и для 3д: есть api, есть драйвер, есть минипорт. На выходе получаешь surfacы. Их можно поставить в очередь отрисовки(flip queue) откуда их будет подбирать DWM и собирать в окошки.

И то же самое для 2Д. каким надо быть идиотом, чтоб городить всякие XAA/EXA/UXA/XAXAXA вместо того, чтоб дать приложению самому отправлять команды на gpu. Там есть полная поддержка всей графики-2д 3д и видео. тот же интелоGPU можно проинструктировать программой, и он сам будет отдавать команды на blit-функцию, рисовать градиенты, глифы печатать, и кривые малевать.

Вот ровно то же самое делает wayland. он подбирает surfacы из flip queue и собирает их в картинку.

Никакого геморроя с bumblebee и прочими костылями для убогих иксов: surfacы которые видит интегрированное видео - они в памяти. mmapнул памяти, занес ее в GTT интеграшки - есть окно. открыл драйвер мегаgpu, занес в его GTT ту же область. все работает. gpu рисует и блитит, интеграшка под чутким руководством оконного манагера собирает и показывает.

Я думаю, иксмены понимают, что их аргументы «за иксы» - это полный бред. Они отлично понимают, что wayland проще и меньше жрет ресурсов. Они отлично понимают, что рисовать можно и без иксов, и даже удобнее, т.к. нет самодельных проблем с несколькими видяхами. И даже их сетевая прозрачность проигрывает RDP по всем параметрам: флешки звук и даже скорость.

Эти деграданты просто идут на принцип. Все они понимают, поэтому как полоумные повторяют про «сетевую прозрачность»: видят, что ничего больше в активе нет.

☆☆☆

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

Внезапно, графика в современной венде идёт не только через него.

Внезапно, user32.dll и всякие commctl32.dll рисуют виджеты исключительно через gdi32.dll. 99% графики на экране десктопа - виджеты GUI.

Спеки радеонов давно открыты, свободный драйвер до сих пор медленнее блоба.

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

Тот же gdi умеет рисовать на принтерах. А иксы?

Х'ам плевать на чём рисовать вообще. Драйвер написать можно к любому девайсу, лишь бы он протокол жрал. А вот для винды драйвер векторного дисплея, например, к GDI не прикрутишь никак вообще. И тот же USB HID дисплей тоже прикрутить просто некуда. Если ничего не поменялось в каких-нибудь семёрочках, то GDI есть 4 вида всего - дисплей, принтер, битмап и WMF. И добавить 5-й типа практически нереально, а некоторые типы нереально совсем.

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

Внезапно, user32.dll и всякие commctl32.dll рисуют виджеты исключительно через gdi32.dll.

man direct2d

man directwrite

Кстати, а в линуксах что вместо этого?

Из этого прямо следует, что спеки открыты далеко не полностью

То есть нужно открыть совсем всё. Желательно вместе с чипом. Тогда, возможно, сообщество что-то осилит.

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

Не представляю, как дальше жить без векторных дисплеев. Кстати, а как они отнесутся к современным линуксовым тулкитам, рендерящим всё в картинку (хотя бы потому, что в иксах даже текст невозможно рисовать без этого)?

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

блоб использует патентованные специально созданные алгоритмы.

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

Не представляю, как дальше жить без векторных дисплеев.

Между прочим, возможно что векторные дисплеи снова появятся в массах и вытеснят растровые. Развитие-то по спирали идёт.

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