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)

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

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

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

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

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

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

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

«Не спрашивай, что может линукс сделать для тебя! Спроси лучше: что можешь ты сделать для линукса». :))

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

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

Фейл номер один. Все эти функции должен прозрачно для приложения брать на себя GPU.

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

Фейл номер два. Что там делает видеокарта - никого не волнует. Основная задача - оптимизировать (в разумной степени минимизировать и упростить) обмен между приложением и GPU. Для отрисовки текста разумным миниумумом служит пиксмап, а вот для отрисовки кривой, линии или градиента - уже команда. Все эти идеи «обмена кадрами» это бред по сути своей. В случае с обычным приложением единственное, что должно делать приложение, это инструктировать графическую подсистему «начинаю обновление контекста (drawable)» и «контекст обновлен, можешь перерисовывать экранный буфер». И никакого «обмена кадрами».

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

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

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

Внутри окна то всё равно уже все в обход иксов рисуют.

Если в обход, то Х и не тормозят, тормозит то что «в обход» :-)

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

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

Что за общие фразы? Конкретно говори, каким образом сделать чтоб при загрузке системы можно было увидеть логи через произвольное устройство, от UART до VESA или USB-терминал быстрее чем через виртуальные терминалы?

Писать в файл. Оправлять по сети.

А если доступа к файловой системе нет? А если нет сети?

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

А как пользователь узнает, всё ли работает, не видя логов?

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

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

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

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

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

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

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

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

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

нормальный OpenGL, а не говноdx
[Citation needed].

OpenGL — универсальный стандарт, разработанный консорциумом производителей видеокарт, а кривой икс — проприетарный костыль от мелкософта. Достаточно?

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

Проще написать новое решение

Судя по тому, что его до сих пор нет — не проще.

Убедись что иксы адово сливают

Лень. Но могу предположить, что OpenGL'ным приложениям сливать будут.

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

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

Тут я тот же вопрос задам: можно через VNC запустить приложение так, что бы его окно было бы на одной машине и при этом вписывалась в оконный менеджер, а само приложение было запущено на другой машине, на которой его окна не было?

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

А по ssh как будешь графику гонять?

Никак. Всё равно графика через SSH тормозит даже в локальной сети... (или я что-то не так делал)

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

графика через SSH тормозит даже в локальной сети...

На стомегабитке полет нормальный. Кстати, можно ведь подключаться без ssh — благо и иксы, и OpenGL это позволяют.

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

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

Да? А мне виндузятник говорил что у него в фаерфоксе видео в HTML5 дико тормозит и во весь экран не делается. А у меня — работает. Фаерфокс с парой сотен вкладок работает вполне плавно.

Так что 4.2

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

Я как-то пробовал настроить и потыкать. Не взлетело.

Кстати, оно разве не весь рабочий стол целиком пробрасывает? А если мне только одно приложение нужно?

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

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

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

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

man seamless rdp.

«Шарик, ты балбес!» (c)

Даже в режиме seamless:

1. Окна по-прежнему имеют виндовые декорации

2. Приложения по-прежнему криво реагируют на переключение раскладки (точнее, никак не реагируют)

3. Адский п..ц со всячесескими session-wide и profiles-specific действиями (типа той же смены раскладки или локали)

А всё потому, что RDP фактически протокол доступа к консоли (возможно, к виртуальной консоли).

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

Зачем?

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

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

Ну почему, загружена, небось, одна, а остальные загрузятся только при переключении на них. Только это, конечно, толсто, да :}

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

OpenGL — универсальный стандарт, разработанный консорциумом производителей видеокарт, а кривой икс — проприетарный костыль от мелкософта. Достаточно?

Нет, желательно технические преимущества. Хотя у OpenGL их нет.

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

man seamless rdp.

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

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

Да? А мне виндузятник говорил что у него в фаерфоксе видео в HTML5 дико тормозит и во весь экран не делается. А у меня — работает. Фаерфокс с парой сотен вкладок работает вполне плавно.

Крайне авторитетно.

x3al ★★★★★
()

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

Дальше не читал.

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

Интересно, как тогда программы xlock и xscreensaver работают?

Они

1. Создают окно

2. Делают его always-on-top

3. Грабят на него фокус

Но это именно коно, которое всегда-сверху-и-всегда-активно-и-захватило-фокус. Это не прорисовка напрямую поверх всех окон, это окно со специфическими настройками.

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

Судя по тому, что его до сих пор нет — не проще.

Разработка вяленного идёт куда шустрее, чем решение проблем иксов...

Лень. Но могу предположить, что OpenGL'ным приложениям сливать будут.

Зато вставить свои пять копеек не лень... ЗЫ сливать и очень сильно, и сливать даже встроенному в Qt программному рендеру.

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

Как и у директа. Последние игрушки, которые делались в версиях для винды (dx) и для мака (ogl) выглядят одинаково и работают с одинаковой скоростью на обоих платформах.

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

Тут я тот же вопрос задам: можно через VNC запустить приложение так, что бы его окно было бы на одной машине и при этом вписывалась в оконный менеджер, а само приложение было запущено на другой машине, на которой его окна не было?

В иксах нет, а вот в вяленом реализовать реально.

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

OpenGL — универсальный стандарт, разработанный консорциумом производителей видеокарт, а кривой икс — проприетарный костыль от мелкософта.

Ты не писал ни на одном, что ли? DirectX имеет продуманный интерфейс, логично устроенный язык шейдеров. Интерфейс OpenGL построен на сто лет назад протухших идеях, а шейдерный язык придумывали школьники. Varying'и всякие - это даже для мерзкого 3D просто абзац.

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

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

fixed.

Включаешь отладочный режим загрузки, грузишь проверенно запасное ядро, меняешь похеренное системное ПО на устойчивое — вариантов масса.

А если баг не повторяющийся? А если он связан с отказом оборудования, а не багом в ПО? Я считаю что по умолчанию ОС на компьютере пользователя должна грузится в режиме с показом логов.

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

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

В клиент-серверных системах (коими является взаимодействие приложений и X-сервера, приложений и Windows и т.д.) есть два вида взаимодействия: интерактивный и пакетный.

Интерактивный вид взаимодействия включает в себя синхронный обмен командами между клиентом и сервером: приложение посылает команду и ждёт её выполнения/ответной реакции.

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

Интерактивный вид взаимодействия при длинной цепочке промежуточных трансформаций отдельной команды очень медленный на сериях команд, следующих одна-за-другой, так как тратится время на ожидание ответной реакции на КАЖДУЮ команду.

Пакетный вид взаимодействия ВСЕГДА быстрее, так как приложению не нужно ждать ответной реакции на каждую команду в «пакете», а ожидается ответная реакция только по завершении всей очереди команд. В пределе очередь команд может состоять из одной команды, тогда пакетный вид взаимодействия по быстроте реакции не будет отличаться от интерактивного вида.

Взаимодействие приложений с графической подсистемой — лишь частный случай клиент-серверного взаимодействия. А вид взаимодействия определяет скорость реакции и отрисовки. Умение компоновать команды отрисовки в очередь и работать с очередями/агрегатами вместо отдельных «векторных» команд отличает развитую графическую подсистему от примитивной.

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

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

отвечающее современным реалиям.

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

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

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

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

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

Исключение составляют только так называемые kiosk

Сейчас все устройства потребительского уровня представляют собой «kiosk». ВНЕЗАПНА?

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

но пользователь и без них чувствует проблему

Как пользователь поймёт, что отвалился винчестер, а не что-то другое без логов? Вот если будет на экране будут сотни строчек i/o error /dev/sda — тогда сразу станет ясно, а без этого как понять почему приложения начали глючить?

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

Как пользователь поймёт, что отвалился винчестер, а не что-то другое без логов?

Например, увидит в Web-браузере страничку консоли управления NAS с отсутствующим/недоступным винчестером. Например, у медиаплеера не сможет открыть библиотеку/библиотека пуста. Логи ему даже не покажут. ;)

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

Покажи кутиперф разницу в 50 мс, хрен её кто в реальности заметит, а тормоза убунту-софтваре-центра заметны всем.

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

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

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

В случае иксов, это дизайн.

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

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

А всякие Wayland, которые не поддерживают нативную сетевую прозрачность — не нужны.

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

Что за современные реалии такие?

А такие: современное приложение (обычно использует Qt, GTK, Cairo, етц) рисует растровую картинку и передаёт её иксам в готовом виде. Изначальный протокол иксов идёт лесом (ибо средствами иксов это рисовать ни хрена не быстро). Иксы в свою очередь реализуют такой режим работы через костыли и крайне не эффективным образом.

Вы быстрее воспринимаете информацию, чем люди 20 лет назад?

К чему этот вброс?!

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

Тут проблемы и без игр - это раз. Ребутаться ради игр я могу и в венду (опять этот дуалбут ради игр) - это два.

и не навязывайте всем отказ от Х-ов.

Я тебе ничего не навязываю. Караван будет идти лай сколько угодно. Если разрабы вяленого осилят приличную реализацию задуманного, то оно взлетит и иксы отмирать начнут и без меня.

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