LINUX.ORG.RU

Ситуация с Wayland: факты о X и Wayland.

 ,


32

7

Это вольный перевод статьи, намедни размещённой на phoronix. Оринальная статья — обзор недостатков, их исправлений и преимуществ между X и Wayland. Её написал Eric Griffith, при участии Daniel Stone, специально для ресурса phoronix. Работа собрана по кусочкам из презентаций Keith Packard, David Airlie, Kristian Høgsberg, из страниц про X11, X12, Wayland в вики и на freedesktop.org, из прямых интервью с разработчиками.

Оригинал выпущен под Creative Commons версия 3, с указанием авторства; перевод доступен на тех же условиях (с указанием на авторов оригинала, как мне кажется).

Недостатки X

Прежде всего автор думает, что преимущества Wayland лучше всего понятны через перспективу недостатков X11. Итак, начнём...

  1. Мы потратили последние десять лет на «исправление» X с помощью оборачивания его расширениями и плагинами. Однако, X имеет минимальную поддержку версионирования расширений.
    • Версионирование ведётся для одного клиента, а не для одного соединения с API расширения; если ваше приложение поддерживает одну версию расширения, а библиотеки — другую, вы не можете предсказать, какая версия расширения будет получена в итоге.
    • Мысленный эксперимент: Rekonq поддерживает Xinput 2.2, библиотеки KDE — Xinput 2.0, а плагин Flash — только базовый X11. Все они будут определять, какая версия подсистемы ввода поддерживается браузером Rekonq, и в результате будет отдана одна версия для работы со всем вводом... И это может быть не та версия, которая имеет всё необходимое.
    • Если вы счастливчик, вы получите минимальную поддерживаемую версию и приложение будет работать хорошо. Если вы не очень удачливый, вы получите максимальную версию и будете посылать бесполезные сообщения между клиентом и X.
  2. X имеет четыре подсистемы ввода: базовый протокол X11, Xinput 1.0, Xinput 2.0, Xinput 2.2. Xinput 1.0 канул в Лету, но оставшиеся три остаются взаимосвязанными. Daniel Stone описал это так: «Есть всего три человека, которые действительно понимают, как подсистемы ввода уживаются вместе... И я бы хотел не быть одним из них».
  3. Много лет назад у кого-то появилась идея «механизм, а не алгоритм». Фраза является отсылкой к тому, что X имеет свой уникальный API для рисования и собственную библиотеку вроде GTK+ или Qt. X определяет низкоуровневые понятия, такие как прямая линия, толстая прямая линия, дуга, окружность, неполноценные шрифты и другие элементы конструктора, бесполезные по отдельности. Примечание от Daniel: «Внешний вид толстых линий должен точно соответствовать спецификации, которая обязывает их выглядеть уродливо».
  4. X большой и тупой. Прежде чем мы (сообщество) начали выкидывать его компоненты и использовать обходные пути, X имел внутри почти полную ОС, включая свой сервер печати и свой бинарный транслятор для ELF, COFF и a.out.
  5. Композитинг и синхронизация окон. Разработчики научили X композитингу с помощью Composite Extension. Композитинг хорош для простых случаев, как то: рабочий стол, OpenGL. Но если вы захотите использовать hardware overlays (т.е видео), может случиться катастрофа. В том же браузере содержимое вкладки и окно flash-плагина обрабатываются отдельно и не синхронизируются, так что остаётся лишь скрестить пальцы в надежде. что разница во времени обработки не будет слишком большой. В результате при прокрутке страницы с играющим видео иногда возникают разрывы и артефакты.
  6. Шрифты. Разработчики пытались перенести шрифты под управление X-сервера с помощью расширения STSF, и предоставить клиентам достаточную информацию, чтобы те могли правильно определить расположение шрифтов на экране. Но количество информации, достаточной для выполнения данной задачи, превышало размер самих шрифтов. В итоге было решено предоставить клиентам полную свободу действий, избавившись от шрифтов на сервере.
  7. Протокол без состояний. Иными словами, X ничего не запоминает.
    • «Пожалуйста, создайте мне X.conf. Пожалуйста, используйте его для настройки.» Зачем?! Со временем это было исправлено: файл конфигурации используется для перезаписи параметров по умолчанию, а сами параметры по умолчанию подчищены и могут теперь определяться автоматически.
    • Многие имели проблемы с многомониторными конфигурациями в Linux, ну или хотя бы перенастраивали X после перезагрузки. Недостаток X в том, что он помнит эти конфигурации только после создания /etc/X11/xorg.conf.d/50-monitors.conf, который скорее всего придётся писать вручную.
    • Мы надеемся, что это было исправлено созданием libkscreen, обёртки над xrandr, которая наконец-то стала запоминать параметры мониторов, используя их уникальный EDID.
    • В течение длительного периода (а может быть и до сих пор) при подключении дополнительного монитора в Linux основной монитор имел композитинг, а дополнительный — нет. Это, возможно, исправлено в RandR1.4, но его автор не может найти убедительных доказательств.
  8. Бесполезная иерархия окон. В X каждое поле ввода и текстовая надпись имеют своё окно со своим родителем. Никто не знает, какую же функцию выполняет эта иерархия. Реальные библиотеки (т.е не основанные на компонентах протокола X11) уже давно выбросили весь этот мусор в окно.
  9. Отчасти придирка, отчасти разумное беспокойство... В X11 каждая из координат— 2-байтное число со знаком. То есть, на всех ваших дисплеях должно быть не более 32,768 пикселей. При 100dpi это даёт вам 8,3-метровый дисплей. Замечательно... Но вот факты для сравнения: Windows XP имеет 96 DPI, а мой телефон — 320+. Добавьте сюда растущие разрешения и несколько мониторов, и вы увидите, что проблема приближается очень даже быстро.
  10. Для X всё является окном, и разных типов окон с его точки зрения нет.
    • Скринсейвер — это окно, которое просит X расположить его поверх всех окон, сделать полноэкранным и отдать весь ввод.
    • Всплывающее окно просит X расположить его в заданной точке и отдать весь ввод.
    • Они конфликтуют: скринсейвер не будет активирован, пока показано всплывающее окно.
    • Наверняка ваши скринсейвер и скринлокер не прокинули хуки во все необходимые библиотеки, распознающие клавиши для управления медиа... Представьте, что вы слушали музыку, работая на ноутбуке, а затем закрыли крышку. Ноутбук уснул, скринсейвер стал активным окном. Как только вы откроете крышку, ноутбук проснётся и музыка загромыхает снова, так что снова закрыть крышку окажется проще, чем вбить проль, затем открыть плеер и поставить его на паузу либо выключить звук.
    • Разработчики пытались исправить проблему и сделали спецификацию нового расширения, которое в теории работало. Но когда его попытались реализовать, оказалось, что оно серьёзно ломает модель работы X-сервера. Так что проблема существовала 26 лет и продолжает существовать. Расслабьтесь и получайте удовольствие.
  11. «Но Eric, если X11 настолько плох, то почему бы не сделать X12 вместо нового протокола?». Ну, формально, это уже сделано. При сохранении его под знаменем X возникает практический недостаток: все, кто беспокоится о X, будут иметь право голоса в разработке следующей версии. С помощью названия «Wayland» этой проблемы можно избежать. Никого ничто не волнует. Это не связанный с X проект, разработчики могут творить с будущим дисплейным сервером всё, что душа пожелает, ну а те, кто беспокоится о X, могут пойти разрабатывать X12.

Лекарство от Wayland (пронумерованы попарно с недостатками X).

  1. Весь протокол версионирован. Каждый слушатель получает именно ту версию, которую он поддерживает, и ничего поверх этого. Никаких случайностей.
  2. Подсистема ввода в Wayland очень похожа на Xinput 2.2, за вычетом всего старья и отношения Master/Slave между источниками ввода. Слушатель получит одну виртуальную клавиатуру, одну виртуальную мышь и один невиртуальный сенсорный ввод. Кошмар под названием «мультитач» в конце концов упорядочен. Примечание от Daniel: как один из авторов мультитача в X, я считаю себя достаточно компетентным, чтобы назвать его кошмарным.
  3. У Wayland нет API для рисования, в обход которого можно было бы работать. Wayland ожидает заполнения клиентом буфера рисования, и его не волнует способ заполнения, если не считать контроля за попытками задеть чужие буфера.
  4. Wayland минималистичен, он не хранит внутри себя псевдо-ОС ради контроля вывода графики. Клиенты принимают на себя этот удар, что хорошо — им не придётся заботиться о сверхдолгом сопровождении обратной совместимости. Qt5 избавилось от модуля qt3support. X всё ещё сопровождает то, что было написано 26 лет назад. Примечание от Daniel: кроме того, вызовы к вейланду — не блокирующие, рисование всего рабочего стола не остановится из-за зависания или очень дорогой операции на стороне одного из клиентов: остановится только этот клиент.
  5. В вейланде — принудительный композитинг. Это не означает, что везде должны быть 3D-эффекты или изгибающиеся окна. Под композитингом мы подразумеваем отсутствие разрывов, необновлённых кусков и проблесков. Лозунг вейланда — «каждый кадр будет идеальным». Каждый пиксель прорисован как должно и расположен где должно, и появляется, когда клиент того потребует.
  6. Шрифты отданы клиентам.
  7. Многомониторные конфигурации и гибридная графика (Optimus) отданы клиентам, вейланду нужен только буфер с пикселями и информация о том, где его расположить.
  8. В вейланде есть два вида окон: окна верхнего уровня и подповерхности (в основном для проигрывания видео). Причём, в отличие от X, они синхронизируются. При прокрутке страницы с видео в браузере у вас не будет ни разрывов, ни артефактов.
  9. С точки зрения клиентов, вейланд не оперирует глобальными координатами, предпочитая систему отсчёта поверхности для рисования. Счётчик координат 31-битный, то есть каждая поверхность может иметь 2,147,483,648 пикселей как в ширину, так и в высоту.
  10. Для обеспечения дополнительной безопасности, ваш скринсейвер и скринлокер являются частью композитора. Кроме того, композитор распознает клавиши управления медиа, так что даже при заблокированном экране можно выключить звук.

Некоторые заблуждения в плане X и Wayland.

  1. «X — это юниксвейно». X обрабатывает печать, управление буферами для рисования, имел свой тулкит, обрабатывал шрифты, имел бинарный транслятор — и всё это помимо других задач.
  2. «В X есть сетевая прозрачность» — её нет. Базовый протокол X и DRI-1 имели сетевую прозрачность, но никто не использует ни то, ни другое. Shared-memory, DRI2 и DRI-3000 не имеют сетевой прозрачности и не работают по сети. В наше время X превратился в синхронный, плохо сделанный VNC. Если бы он был плохо сделанным асинхронным VNC, то может быть мы бы и заставили его работать. Но он не такой: XLib синхронная, а переход на XCB медленный, что делает передачу по сети настоящим кошмаром.
  3. «Разработчики Wayland наступают на те же грабли, что и X11, потому что не знают его» — неверно, потому что большинство разработчиков Wayland являются бывшими разработчиками X11.
  4. «Вейланд требует 3D.» — неверно, он требует только композитинга, так что есть даже бекенд на pixman для программной отрисовки.
  5. «Вейланд не умеет в удалённый доступ» — умеет, и должен справиться с этой задачей лучше чем X, отчасти из-за асинхронности протокола. Скорее всего Wayland станет высокопроизводительной версией VNC, и прототип уже есть. Причём мы ещё ни разу не давали идей по его улучшению, и скорее всего сможем сделать его лучше, если приложим усилия.
  6. «Вейланд нарушает обратную совместимость» — с тех пор как XWayland закончен и принят в основную ветку, у нас должна появиться почти совершенная обратная совместимость, потому что каждое приложение, использующее X, получает маленький X-сервер для дальнейшей работы с ним. Нам известно одно препятствие — трансформации окна, ведь приложение думает, что оно расположено в верхнем правом углу экрана, оттого, что клиентский X-сервер приведён к размерам клиентского окна.

Парочка характерных преимуществ Wayland

  1. «Каждый кадр будет идеальным». Каждый кадр будет представлен в правильном порядке (возможен сброс лишних кадров, но вы не получите кадр 199, затем 205, а затем 200 оттого, что сервер извлёк их в произвольном порядке. Каждый кадр имеет свой timestamp.)
  2. Минималистичный! Мы способствуем славному будущему Wayland путём уменьшения пространства для возможных ошибок.
  3. Бекенды, специфичные для оборудования. Думается, некоторые люди заметили появление бекенда Wayland, предназначенного для Rasberry Pi — он позволяет использовать все особенности этой платформы. Такой подход используется не везде, многие вещи не потребуют бекенда для конкретного оборудования, но неплохо бы иметь возможность сделать доработку, когда потребуется.

P.S. От переводчика: заметно, что в статье мало технических деталей или же ссылок, а лозунги я наоборот вырезал. К слову, о минималистичности: для вейланда уже есть композитор, способный отображать окна в 3d-пространстве на манер quake, но что-то я сомневаюсь в правильной обработке звука в таком 3d. Для игр есть OpenAL, который имеет 3d-координаты, соответствующие координатам OpenGL (синхронизация позиций источников звука и слушателя с позициями объектов и камеры производится программистом). Для вейланда нет ничего подобного OpenAL.

Если же кто-то имеет вопросы к авторам статьи — он может задать их на Phoronix.

>>> Подробности

★★★★

Проверено: maxcom ()
Последнее исправление: Aceler (всего исправлений: 16)

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

OpenGL и DirectX - это, вообще-то, тоже «рисование примитивами»

И как оно, в девяностых? А у нас тут после OpenGL 1.4 столько всего вышло...

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

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

В каноникле нет программистов, только менятели обоев и перемещатели кнопок на окнах.

bsdfun ★★★★★
()

А кто нить может объяснить, использует ли это возможности ускорителя по рисованию линий, градиентов, масштабирования и тд

namezys ★★★★
()

Работа собрана по кусочкам из презентаций Keith Packard, David Airlie, Kristian Høgsberg, из страниц про X11, X12, Wayland в вики и на freedesktop.org, из прямых интервью с разработчиками.

Забавно. Это упражнение в фигурном цитировании?

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

То бишь не «приложение запрашивает у вяленда буффер и потом рендерит в него», а «приложение создает буффер, к которому может подключиться сервер дисплея»

Идея богатая, но какого фига приложение должно рисовать свой буфер?

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

У нас даже в 90-х в openGL были текстуры.

Aceler ★★★★★
()

Отлично. Теперь истеричек-искодрочеров можно просто посылать на этот тред.

Одно напрягает: туманные перспективы драйвера nvidia для wayland.

fragmentor
()

это все конечно хорошо, я весь в предвкушении и все такое. но. работа на *BSD и прочих нелинуксах будет? в freebsd сейчас двадцать четыре тысячи портов и вяйленда нету. с остальными bsd все также, только портов меньше.

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

Теперь каждый кто когда-тол был WM должен будет стать CM

Почему «теперь»? Давно уже стали. Gnome Shell — CM, Compiz — CM, Kwin — CM, даже Metacity умеет CM. Собственно, идея Wayland родилась из понимания того, что все мажорные WM уже давно CM.

Aceler ★★★★★
()

Победит тот кто будет работать поверх проприетарных Linux-драйверов и Android-драверов. И победителем будет Mir.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от mos

тут же предлагается выкинуть идею

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

А так, да, иксы не так уж и плохи, просто если это всё выкинуть, это будут уже не иксы.

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

Дык и в последнем опенгл самая сложная геометрическая сущность — треугольник.

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

Одно напрягает: туманные перспективы драйвера nvidia для wayland.

На nVidia будут давить для создания Gallium3D драйвера совместно все — и Canonical, и Intel, и Valve и все остальные. В конце концов, писать для Gallium3D должно быть проще.

Не думаю, что nVidia будет долго сопротивляться.

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

1. Cетевую прозрачность - потеряли. Вообще. Даже ту убогую которая была

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

2. Независимость от дисплейного сервера - не приобрели (сдох вялендокомпозитор - все его клиенты сдохли)

С иксами аналогично.

5. Кроссплатформенность и способность работать в гетерогенной среде (естественное следствие «распределённости» X) - потеряли

Уверен, что запилят wayland-client для винды и появится кроссплатформенность, XWin ведь не сразу появился :)

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

А вы готовы понять, что «shared memory» это тупиковое направление и прошлый век, поскольку рисовать надо примитивами?

Ой-йо. А поиграй мне 4k видео примитивами :D Ну ладно, хотя бы FullHD :)))

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

По вейленду есть техническая информация, понятно что это такое. А mir — херня какая-то.

Вся техническая информация тут: https://wiki.ubuntu.com/Mir/Spec

Или тебе нужна статья по типу такой же форониксовой? :D

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

Или тебе нужна статья по типу такой же форониксовой? :D

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

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

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

В компьютерах, Direct Rendering Infrastructure (DRI) — это интерфейс ... Основное назначение DRI — обеспечение аппаратного ускорения Mesa, одной из реализаций OpenGL.

Насчет ускорения: во всех *BSD которые я пробовал оно работает как говно. Все трёхмерное и не трёхмерное лагает страшно. Я пробовал fceux поставить, он если включить в его настройках opengl начинал тормозить, а без него норм. Ну как норм...

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

У вейландовцев имхо с пиаром на данный момент выходит лучше, чем у каноникла.

Каноникал клёвые видео показывает, и считают, что этого достаточно.

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

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

1) на мой дилетантский взгляд, говоря о «проблемах» Х, они в основном указывают на недостатки реализации, а не архитектуры вообще

Нет, указывают именно на проблему архитектуры. Есть «базовый X», который «все может», включая сетевую прозрачность, но он морально устарел и его никто не используют, а есть плагины-подпорки, которые делают так, чтобы X хоть как-то работали. В результате получается ужас.

Иксы же сделали всё это раньше

В основе сетевой прозрачности иксов лежит совсем другая идея нежели в RDP, VNC и аналогах. И эта идея уже изжила себя и сейчас не работает.

и это как бы не «вина» иксов, что этим вещи сразу были сделаны наперекор изначальной идее.

Изначальная идея — гонять по сети команды отрисовки не работает.

во-первых есть NX

Проприетарный костыль.

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

Каноникал клёвые видео показывает, и считают, что этого достаточно.

Я помню только одно клёвое видео, где на ноутбуке были запущенны qtшные хелловорлды от ubuntu phone.

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

Идея богатая, но какого фига приложение должно рисовать свой буфер?

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

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

тоесть получается что:

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

это нормально,

а это:

Вместо того, чтобы тупо реализовать rootless X сервер, они предпочли для каждого приложения создавать собственный рутабельный (в смысле с root-окном) X-сервер, и внутри него рендерить X-клиента...

нет?

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

Дык где-то в квартальном отчете FreeBSD-шники писали же, что будут портировать.

junkie
()

попытками задеть чужие буфера.

Домогательство же :3

А так интересная статья, спасибо.

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

Скачал. За три минуты банальным ресайзингом умудрился его поломать: https://docs.google.com/file/d/0B_k04ZnX_vvzMl9uYnkxOU1kbzQ/edit?usp=sharing

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

Application Launcher сломан.

Всё то, что в иксах было Borderless и привязывалось к панели (это я про launcher, kde network manager и прочие) — здесь только отдельными самостоятельными окнами. К тому же, эти окна нельзя просто так взять и закрыть.

И ЭТО они писали несколько лет? Wayland — в зачаточном, мало к чему пригодном состоянии.

Deleted
()

> Мы потратили последние десять лет на «исправление» X с помощью оборачивания его расширениями и плагинами. Однако, X имеет минимальную поддержку версионирования расширений.

Говорят, Wayland вообще не расширяем.

> X имеет четыре подсистемы ввода: базовый протокол X11, Xinput 1.0, Xinput 2.0, Xinput 2.2. Xinput 1.0 канул в Лету, но оставшиеся три остаются взаимосвязанными. Daniel Stone описал это так: «Есть всего три человека, которые действительно понимают, как подсистемы ввода уживаются вместе... И я не думаю, что являюсь одним из них».

Звучит так, как будто Xi2 написан в 1990-м. Нет, в 2009-м. Если эти люди не могут написать с нуля Xi для иксов, то у них и для Wayland не получится.

> Подсистема ввода в Wayland очень похожа на Xinput 2.2 ... Примечание от Daniel: как один из авторов мультитача в X, я считаю себя достаточно компетентным, чтобы назвать его кошмарным.

Ну я же говорил.

> Много лет назад у кого-то появилась идея «механизм, а не алгоритм». Фраза является отсылкой к тому, что X имеет свой уникальный API для рисования и собственную библиотеку вроде GTK+ или Qt. ... «Внешний вид толстых линий должен точно соответствовать спецификации, которая обязывает их выглядеть уродливо».

Эм, а где тут что-то плохое?

> X большой и тупой.

По-моему, исчерпывающая аргументация. ВСЕ НА WAYLAND!!!11

А если серьёзно - напомнить для каких компьютеров проектировались X?

> Прежде чем мы (сообщество) начали выкидывать его компоненты и использовать обходные пути, X имел внутри почти полную ОС, включая свой сервер печати и свой бинарный транслятор для ELF, COFF и a.out.

В компьютерной компании женским туалетом пользуется 1% людей. Давайте уберём его, он не нужен!

> Композитинг и синхронизация окон. Разработчики научили X композитингу с помощью Composite Extension. Композитинг хорош для простых случаев, как то: рабочий стол, OpenGL. Но если вы захотите использовать hardware overlays (т.е видео), может случиться катастрофа.

Отправьте багрепорт.

> Шрифты. Разработчики пытались перенести шрифты под управление X-сервера с помощью расширения STSF, и предоставить клиентам достаточную информацию, чтобы те могли правильно определить расположение шрифтов на экране. Но количество информации, достаточной для выполнения данной задачи, превышало размер самих шрифтов. В итоге было решено предоставить клиентам полную свободу действий, избавившись от шрифтов на сервере.

Гонять битмапы и на иксах можно.

> «Пожалуйста, создайте мне X.conf. Пожалуйста, используйте его для настройки.» Зачем?!

А что если у меня многомониторная конфигурация? А что если у меня новая NVIDIA, старая NVIDIA и ATi на дном компьютере? Иксы сами не догадаются что сделать.

> Со временем это было исправлено ... параметры по умолчанию подчищены и могут теперь определяться автоматически ... Многие имели проблемы с многомониторными конфигурациями в Linux, ну или хотя бы перенастраивали X после перезагрузки.

Ну сами же себе противоречите. «Конфиг не нужен, это недостаток иксов, надо исправить! Оп-па, два монитора сами не определились, опять недостаток иксов!»

> В течение длительного периода (а может быть и до сих пор) при подключении дополнительного монитора в Linux основной монитор имел композитинг, а дополнительный — нет.

NVIDIA - всё работает.

> Бесполезная иерархия окон. В X каждое поле ввода и текстовая надпись имеют своё окно со своим родителем. Никто не знает, какую же функцию выполняет эта иерархия.

Это создаёт проблемы разработчику?

> Отчасти придирка, отчасти разумное беспокойство... В X11 каждая из координат— 2-байтное число со знаком. То есть, на всех ваших дисплеях должно быть не более 32,768 пикселей. При 100dpi это даёт вам 8,3-метровый дисплей. Замечательно... Но вот факты для сравнения: Windows XP имеет 96 DPI, а мой телефон — 320+. Добавьте сюда растущие разрешения и несколько мониторов, и вы увидите, что проблема приближается очень даже быстро.

Выпустите новый X-Server 1.15, где всё будет исправлено. Или отправьте багрепорт.

> Скринсейвер — это окно, которое просит X расположить его поверх всех окон, сделать полноэкранным и отдать весь ввод.

Согласен, проблема.

> Разработчики пытались исправить проблему и сделали спецификацию нового расширения, которое в теории работало. Но когда его попытались реализовать, оказалось, что оно серьёзно ломает модель работы X-сервера. Так что проблема существовала 26 лет и продолжает существовать. Расслабьтесь и получайте удовольствие.

Лично у меня первые MP3 появились в 1998 году (15 лет назад).

> У Wayland нет API для рисования, в обход которого можно было бы работать.

Даже если бы и было, мешало бы кому-нибудь?

> Wayland минималистичен, он не хранит внутри себя псевдо-ОС ради контроля вывода графики.

А кто тогда контролирует? Мама Анархия?

> Клиенты принимают на себя этот удар, что хорошо — им не придётся заботиться о сверхдолгом сопровождении обратной совместимости.

А, теперь каждый запущенный на компьютере клиент - псевдо-ОС для контроля вывода графики.

> Qt5 избавилось от модуля qt3support. X всё ещё сопровождает то, что было написано 26 лет назад.

Qt3 можно установить рядом с Qt4 и Qt5, если понадобится. А почему это X сопровождает что-то там? Пример: какие-нибудь Heroes III и Quake II используют функцию X, которая устарела и больше не используется ничем. При этом Heroes III вообще статически собраны и тянут libX11 с собой! В чём проблема выпустить libX11.so.7 и устанавливать в ОС обе этих библиотеки? 6 и 7 версии?

И что тогда получается, слой совместимости с иксами в вайленд - это ещё 20 лет тянуть эти deprecated-расширения?

> «Вейланд нарушает обратную совместимость» — с тех пор как XWayland закончен и принят в основную ветку, у нас должна появиться почти совершенная обратная совместимость, потому что каждое приложение, использующее X, получает маленький X-сервер для дальнейшей работы с ним.

Конечно нет, сделают как я выше написал. Так почему бы сейчас это не сделать?

> Примечание от Daniel: кроме того, вызовы к вейланду — не блокирующие, рисование всего рабочего стола не остановится из-за зависания или очень дорогой операции на стороне одного из клиентов: остановится только этот клиент.

О чём он? Ну вот завис у меня OpenOffice.org. Что-то я не наблюдаю эффекта поцарапанной дискеты или CD-диска в Windows 9x! Всё остальное работает!

> В вейланде — принудительный композитинг ... Лозунг вейланда — «каждый кадр будет идеальным». Каждый пиксель прорисован как должно и расположен где должно, и появляется, когда клиент того потребует.

Шрифты отданы клиентам.

Я и в иксах так умею.

> Многомониторные конфигурации и гибридная графика (Optimus) отданы клиентам

А Qt с GTK договорятся между собой о том, как им сконфигурировать мониторы? А программистам теперь учить медиаплеер конфигурировать NVIDIA Optimus?

> В вейланде есть два вида окон: окна верхнего уровня и подповерхности (в основном для проигрывания видео). Причём, в отличие от X, они синхронизируются. При прокрутке страницы с видео в браузере у вас не будет ни разрывов, ни артефактов.

VSync.

> С точки зрения клиентов, вейланд не оперирует глобальными координатами, предпочитая систему отсчёта поверхности для рисования. Счётчик координат 31-битный, то есть каждая поверхность может иметь 2,147,483,648 пикселей как в ширину, так и в высоту.

Новые версии X-Server выходят постоянно. Не вижу проблемы и там поправить, раз уж проблема известна.

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

actkbd (демон на 30 Кб) умеет делать это в иксах - уделал.

> «В X есть сетевая прозрачность» — её нет. Базовый протокол X и DRI-1 имели сетевую прозрачность, но никто не использует ни то, ни другое. Shared-memory, DRI2 и DRI-3000 не имеют сетевой прозрачности и не работают по сети.

Сетевая прозрачность иксов и скорость работы - практика

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

Ага, особенно круто его по сети наверное кидать. Кстати, вроде в Мире как раз эти буферы сами клиенты себе делают и потом говорят серверу, что мол у меня есть буфер, выведи мне его.

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

Я через два дня после видео сам конпелял и пробовал Unity Next на Mire — всё прекрасно работало.

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

Кстати, вот так вот сломать окна ресайзом на Weston, который идет в моей Fedora 18, не получается.

Deleted
()

Daniel Stone описал это так: «Есть всего три человека, которые действительно понимают, как подсистемы ввода уживаются вместе... И я не думаю, что являюсь одним из них».

Он сказал: «И я бы хотел не быть одним из них».

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

Новые версии X-Server выходят постоянно. Не вижу проблемы и там поправить, раз уж проблема известна.

Нельзя, это проблема протокола. Одно приложение слинковано с xlib-1 с 2х байтными координатами, а другое с xlib-2 с 4х байтными и оба пытаются взаимодействовать с моим XWin. Догадайся что получится ?

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

Мир пилят уже довольно давно.

Указывалось, что с лета прошлого года, а посему фраза

миру менее года..

есть правда.

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

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

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

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

А как они выкрутятся из ситуации, когда у X-клиента более одного top-level окна???

Прастому пользывателю эта ни нада.

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

В компьютерной компании женским туалетом пользуется 1% людей. Давайте уберём его, он не нужен!

Даже среди программистов 5-10% точно набежит, а с менеджерами/дизайнерами так и вовсе. С остальным не спорю.

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

Нет, указывают именно на проблему архитектуры. Есть «базовый X», который «все может», включая сетевую прозрачность, но он морально устарел и его никто не используют, а есть плагины-подпорки, которые делают так, чтобы X хоть как-то работали. В результате получается ужас.

да, я так же ситуацию понимаю.

В основе сетевой прозрачности иксов лежит совсем другая идея нежели в RDP, VNC и аналогах. И эта идея уже изжила себя и сейчас не работает.

понятно, они screen-scrapers. но я не зря упомянул про LTSP - работать (хоть и по локалке), в квадриллион раз приятнее, чем по VNC.

Изначальная идея — гонять по сети команды отрисовки не работает.

вот это хотя бы прямо сказано )

Проприетарный костыль.

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

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

>> Новые версии X-Server выходят постоянно. Не вижу проблемы и там поправить, раз уж проблема известна.

> Нельзя, это проблема протокола. Одно приложение слинковано с xlib-1 с 2х байтными координатами, а другое с xlib-2 с 4х байтными и оба пытаются что-то слать в мой XWin. Догадайся что получится ?

Одно приложение использует libX11.so.6, а другое libX11.so.7. Это работает: в играх Loki Software, скомпилированных статически, вообще древняя версия этой библиотеки. Более того, с X Input именно так и проделали ради multitouch, теперь версия с multitouch имеет номер 2. Но и со старыми приложениями совместимость не потеряна.

Не успел поправить ошибки - быстро же ты коммент написал.

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

Он сказал: «И я бы хотел не быть одним из них».

Спасибо. Увы, исправить не могу.

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

Раньше процесс входа в систему управлялся разными *dm, сейчас эти функции берёт на себя systemd

А сам «Вейланд» еще в «Системди» не включили разве?

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

Это не работает никак вообще. Сервер у меня работает с 2х байтовыми координатами, второе приложение мне его повалит и обрушится само. Если сервер работает с 4х байтовыми координатами, то он обрушит первое приложение. Ты предлагаешь на машине держать по выводку серверов с разными протоколами?

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