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)
Ответ на: комментарий от Rakot

На ноутбуках на свободных не посидишь

4.2, и у Intel и AMD свободные дрова работают отлично — ничего не тормозит, даже 3D-игры типа Warzone2100 2.3.9 летают.

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

лучше DirectFB

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

Xenius ★★★★★
()

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

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

Упс... Значит, я что-то не то припомнил ;D

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

Ты же про иксы (фичу иксов то бишь) писал, когда говорил «выбросить половину функционала - тут много ума не надо».

Так выбросили-то в вяленде. А его недавно сделали. Могли бы и сразу весь функционал переписать.

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

Тем что позволяет отрисовывать прямо во фреймбуфер без всяких костылей

Т.е. я могу нарисовать что угодно в фреймбуфере поверх всех окон и мне ничего за это не будет? Да, это намного лучше. Будем делать линукслоки.

И да, композитинг нужен.

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

Реализовать какой-нить сраный vnc поверх того же вяленого не проблема

Костыль не нужен. А вообще в Plan9 давно уже сетевая прозрачность сделана даже не только в иксах. Можно попробовать вместо X11 сделать что-то вроде 9p.

Xenius ★★★★★
()
Ответ на: комментарий от no-dashi

90% приложений не нужны все эти сюрфейсы, шейдеры и прочие обдроченые тобой идеи. Им достаточно fillrect(), drawpixmap(), line(), drawtext().

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

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

И ещё. Чем «дальше» от приложений находится точка синхронизации графических операций, тем медленнее происходит отрисовка.

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

работают отлично — ничего не тормозит

Только аккумулятор быстро умирает. Зато свободно.

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

Можно попробовать вместо X11 сделать что-то вроде 9p.

Ты представляешь, КАК всё это будет тормозить?

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

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

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

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

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

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

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

Stanson ★★★★★
()

Это такое же legacy как терминалы в ядре.

Дальше читать смысла не вижу.

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

А вот то, что круизис работает с высоким фпс и при этом все детали и эффекты рендерит, а не как в wine - это не считается?

VegaStrike под виндой так тормозит, что играть невозможно, а на той же машине в GNU/Linux — летает. Просто ты говоришь о проприетарных говноиграх, которые прибиты костылями к одной платформе. Если бы крузис можно было скомпилировать под GNU/Linux без вайна и использовать в нём нормальный OpenGL, а не говноdx, и он бы и тогда под виндой работал быстрее — другое дело.

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

Видеокарта отправляет на физическое устройство (дисплей) растр, а значит выгоднее иметь синхронный обмен кадрами между приложением (или менеджером, который комбинирует запросы приложений на отрисовку в одну «картинку») и видеокартой/дисплеем.

Узколобые, ограниченные юзеры бытовой техники! Кто вам сказал, что вообще «Видеокарта отправляет на физическое устройство (дисплей) растр» ? А если это векторная видеокарта? Или вообще девайс CGH?

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

У меня работает. С разными компами пробовал, везде приложения пробрасываются. Работает медленно, согласен. Но работает.

Ну и да, кто говорил, что в иксах это сделать хорошо? Лучше уж так, чем вообще никак.

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

Ты представляешь, КАК всё это будет тормозить?

Зато архитектура красивая и без костылей, же!

Тьфу, как задолбали кролефонатики.

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

Чем тебе не нравятся терминалы в ядре?

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

Как по-твоему ядро должно выводить логи загрузки без терминалов?

Писать в файл. Оправлять по сети. Есть куча способово получить логи загрузки. Если всё работает, то пользователям логи не нужны.

Логи — отладочный рудимент, по большому счёту. Представляют интерес только исследователям-разработчикам.

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

>Лучше уж так, чем вообще никак.

Почему это вдруг никак? Есть же другие способы. И они тоже работают, хотя может и не так Ъ, как то, что уже встроено.

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

Вот поэтому блобы и не нужны, а в галлиуме есть няшный стейтрекер xorg и не нужно писать отдельный иксовый драйвер.

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

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

man direct2d

man directwrite

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

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

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

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

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

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

Кто вам сказал, что вообще «Видеокарта отправляет на физическое устройство (дисплей) растр» ? А если это векторная видеокарта? Или вообще девайс CGH?

Не видел таких в природе. Значит их не существует. :)

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

Логи — отладочный рудимент, по большому счёту

Не надо трололо! Грузишь, допустим, операционку, вдруг — бац, и какой-то косяк. И как без логов узнать, что где не так пошло?

Нет уж, экран загрузки в стиле мастдайки не нужен.

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

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

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

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

Костыль не нужен.

Это не костыль, а вполне себе готовая, давно существующая, обкатанная, кросс платформенная технология. И оно прекрасно вписывается в вяленого...

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

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

Вот в этом вся и загвоздка, Wayland таковой не является, поскольку имеет существенные недостатки по сравнению с иксами. Нужно создавать нормальную архитектуру, а не строить костыли.

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

Винда тормозит, а иксы нет. Железо одно и то же.

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

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

Не надо кривые аналогии подбирать. Иксы работают. Успешно работают и не тормозят.

Ты, мягко говоря, далек от понимания КАК они работают. Насколько не оптимально они используются современным прикладным ПО. И какова их производительность на самом деле (тут кто-то уже предлагал qtperf гонять, рекомендую заценить как твои иксы не тормозят).

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

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

А как с клавиатурой? С раскладками? Включая сложные?

Под wayland их уже пилят (причём нативные).

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

есть, всё там есть.

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

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

Грузишь, допустим, операционку, вдруг — бац, и какой-то косяк. И как без логов узнать, что где не так пошло?

Включаешь отладочный режим загрузки, грузишь проверенно запасное ядро, меняешь похеренное системное ПО на устойчивое — вариантов масса. Или ты хочешь отправить отчёт разработчикам о своей ВНЕЗАПНОЙ проблеме? Так вот, у конечных пользователей внезапно ничего не случается, пока они не становятся частью сообщества разработчиков, то есть пока не принимают условности и возможности участия в ТЕСТИРОВАНИИ ПО. И, соответственно, не нуждаются в диалоге с разработчиками, когда что-то пойдёт не так (условно: когда ПО не соответствует заявленным возможностям). Такие пользователи просто меняют неработающее ПО на работающее БЕЗ выяснения причин. Логи им не нужны. Ясно?

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

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

4.2

Нужно создавать нормальную архитектуру, а не строить костыли.

И костылём для чего является вяленный? Вот иксы состоят чуть менее чем полностью из костылей и ещё из размазанных, как говно по туалетной бумаге, «стандартов», которые ох как не всегда и не всеми соблюдаются.

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

Ты, мягко говоря, далек от понимания КАК они работают.

Я согласен с тем, что производительность иксов надо бы как-то повысить. Но сами иксы закапывать рано — аналогии то нет вообще никакой!

тут кто-то уже предлагал qtperf гонять, рекомендую заценить как твои иксы не тормозят

Я говнокути вообще стараюсь не использовать.

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

Такие пользователи просто меняют неработающее ПО на работающее БЕЗ выяснения причин.

Такие пользователи линуксу просто не нужны. Ясно?

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

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

А в иксах не можешь? Интересно, как тогда программы xlock и xscreensaver работают?

Да, это намного лучше. Будем делать линукслоки.

Как связана возможность рисования во весь экран и возможность делать локи? Теперь во весь экран даже всякие браузеры могут рисовать.

И да, композитинг нужен.

Зачем?

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

В случае с жиролисом иксы тормозят, а венда нет. Потому, что D2D и DWrite работают лучше

Чушь. Если фокс и тормозит в линуксе, то только потому, что основной аудиторией и платформой разработки фокса является венда.

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

Можно попробовать вместо X11 сделать что-то вроде 9p.
Ты представляешь, КАК всё это будет тормозить?

Иксы и Plan9 почему-то не тормозят

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

Другой случай: частичный отказ аппаратуры. Логи, конечно, показывают проблему до устройства, но пользователь и без них чувствует проблему (какой-то адаптер перестал работать, винчестер отвалился, видеокарта не передаёт картинку на монитор и т.д.). Что ещё?

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