LINUX.ORG.RU

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

 ,


29

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.

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

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

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

You're welcome to Plan9/Inferno, friend!

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

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

хм, то-то гугль свой nx сервер запилил. обширность клиентской базы самой !Machine конечно не знаю. что скажешь?

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

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

Так на макбуке телефонный (планшетный) интерфейс и запустили. Где окошки? Где либрофис?

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

В Plan9 каждое приложение пускается со своими /dev/mouse, /dev/keyboard и /dev/draw. Графический сервер — простая прокся между этими устройствами в файловом пространстве приложений и системными.

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

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

обширность клиентской базы самой !Machine конечно не знаю. что скажешь?

А причём тут !Machine? NX всего лишь упаковывает X протокол в свой. От этого тулкиты не начинают пользоваться всякими интересными расширениями многолетней давности.

вот я прямо сейчас использую - synaptic запущен с ноута на десктопе

Привожу простой пример — запусти удалённо Firefox, а потом запусти удалённо Links2 с -g. Открой один сайт и посмотри, что получится.

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

Вроде бы virtualgl никуда не выкинули, живёт, здравствует, используется в bumblebee.

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

При использовании чистой сетевой прозрачности X-ов без VirtualGL и прочих извращений быстрое 3D не получится, как ни крути (Indirect rendering не будет работать быстро на настоящих сетях, только на гигабитах между виртуальными машинами :)).

Тем не менее, сетевая прозрачность полностью жива и полезна. Я раньше ее активно использовал. Для удаленного доступа ничего лучше не придумали, чем ssh -Y

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

Так на макбуке телефонный (планшетный) интерфейс и запустили.

Так а другого пока и нет.

Где окошки? Где либрофис?

В планах. Они пока показывают, что у них один и тот же сервер и одно и то же ПО работает с тремя D и на телефонах и на десктопах. Им это сейчас важнее, чем совместимость с X11/Wayland.

Сделают к осени, эти могут.

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

Андроид тоже давно уже работает на писюках. Mir, случаем, не переименованный SurfaceFlinger?

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

надо «всего лишь» договориться об одном тулките уже современном и запихнуть в кору Х.

Невозможно и никому не нужно это.

Скорее минус, чем плюс.

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

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

С 3D? Я что-то не помню 3D ускорения в Android x86.

Mir, случаем, не переименованный SurfaceFlinger?

Нет, но он использует libEGL и bionic на андроидоплатформе, проксируя libc через libhybris. А на x86 используется Gallium3D без извращений.

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

С 3D? Я что-то не помню 3D ускорения в Android x86.

На интелах и амд работает где-то начиная с 4.0.

PolarFox ★★★★★ ()

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

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

Сколько тебя читаю, постоянный баттхерт. То по поводу systemd, то по поводу Wayland. Иди уже в маководы.

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

Рисовать примитивами — бред.

Куясе. Вообще-то рисование всегда выполняется примитивами.

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

NX всего лишь упаковывает X протокол в свой.

без арх. иксов оно бы так же легко это делало? вот причем.

Привожу простой пример — запусти удалённо Firefox, а потом запусти удалённо Links2 с -g. Открой один сайт и посмотри, что получится.

что? links там нет, ставить влом, уж извини. запустил хромиум (фокс уже на десктопе запущен), открыл неск. сайтов - скроллинг тормозит с одной стороны заметно, с другой не настолько чтоб было неюзабельно. это при том, что на ноуте е450 и туннель через ssh а не Хephyr -locate или как там (ssh при скроллинге проц и напрягает). так what was your point?

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

так what was your point?

Links тормозит. Причём тормозит дико. А Firefox нет.

Point был в том, что качество жизни и производительность протокола X сильно зависит от пряморукости разработчиков приложений. В Wayland же все приложения работают одинаково хорошо/одинаково плохо.

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

Вообще-то рисование всегда выполняется примитивами.

Флеш мне видео когда посередь браузера показывает — он тоже примитивами рисует?

Или что ты называешь примитивом? Цветная точка тоже примитив, да ;)

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

Два треугольника с натянутой текстурой — примитив. Собственно во всех продвинутых ОС так и рисуется.

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

Два треугольника с натянутой текстурой — примитив. Собственно во всех продвинутых ОС так и рисуется.

Но no-dashi писал так, как будто возражал, а не соглашался.

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

Кста, GL_QUADS тоже разбивается на два треугольника? Только сегодня делал программулину по работе, использую масштабированный вывод 2D картинки через OpenGL...

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

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

Дурень, Wayland изначально был исследовательским проектом. Это потом он сформировался во что-то большее. Никто программистов не подгонял. Единственный момент - после объявления Canonical о работе над Mir'ом Wayland'овцы приударили, но к этому моменту он уже по большей части стал готовым.

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

В Plan9 каждое приложение пускается со своими /dev/mouse, /dev/keyboard и /dev/draw. Графический сервер — простая прокся между этими устройствами в файловом пространстве приложений и системными.

И это напоминает... ОБОЖЕМОЙ, да это же как wayland! Только проще и с некоторым подобием сетевой прозрачности.
Тулкитостроителям на заметку: в 9fans упоминали о клиент-серверной архитектуре тулкита, так что смотрите: реализуете первыми — будете новаторами.

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

QUADS вроде на ES нет. Да и в core profile последних версий тоже. Квадрат можно и фанстрипом нарисовать, те же 4 вершины будут.

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

В план9 тоже всё с сетевой прозрачностью. Ведь /dev/draw легко может находится на другом компьютере.

И имхо в план9 графика устроена ну очень просто. Правда ничего сложного в ней и не нарисуешь.

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

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

Если тебе так нравятся иксы - го их поддерживать. И ссылки на коммиты не забудь приложить.

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

Вы забываете, что почти все приличные GUI-приложения работают с Gtk и то, что умеет Qt - им глубоко фиолетово. А разрабы Gtk не будут делать бэкенд для Mir(спасение утопающих - дело рук самих утопающих)...

lucentcode ★★★★★ ()

Wayland - няшка:) Вот только пилят его долго. Хочу сейчас уже работающий Wayland. Очень хочу...

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

/dev/draw легко может находится на другом компьютере

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

quantum-troll ★★★★★ ()

мы ниасилили рендеринг шрифтов на сервере
и понарисовали нескучных тем для гтк/куте

о божежмой, по сети теперь приходится гонять битмапы, всё тормозит!

н-цать лет бедные юзеры плюются и почти не пользуются сетевой прозрачностью

потребности в сетевой прозрачности нет!111 Делаем вейланд без неё!

Замечательная логика. Сломали - зачем чинить, когда можно отрезать!

Иксорг уродлив и ненадёжен, вейланд убог. БЕЗNСХОДНОСТ,

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

А разрабы Gtk не будут делать бэкенд для Mir

значит это сделает Canonical либо вечная эмуляция иксов

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

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

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

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

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

Nvidia вроде как собиралась выпустить драйвер с EGL, так что Wayland'у этого должно хватить. Туманнее же перспективы у блоба AMD.

// Инфа откуда-то с LOR'а.

carasin ★★★★★ ()

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

Намедни тут видео с Вялендом было, все в диком тиринге. Ожидается ли переход от лозунгов к делам?

Citramonum ★★ ()

Больше похоже на бред маркетолога, который можно уложить в одну фразу «В Х идеи 1-10 реализованы плохо, поэтому мы из вяленда выкинули эти идеи» А при учете того, что они же и Х когда-то писали, не удивлюсь если оставшиеся идеи они тоже реализуют... как обычно.

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

А отсюда можно ль поподробнее? Что-то именно про gallium в блобе Nvidia ничего не слышал.

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

А кто, если не приложение?

тот, кто делает это лучше? Чип видоекарты, например

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

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

А может кто-то умеет рисовать лучше?

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

тот, кто делает это лучше? Чип видоекарты, например

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

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

В план9 весь трюк творится за счёт организации файловой системы.

Фактически — самое ценное в Plan 9.

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

Можно 4 байта использовать в XCB, libX11 все равно уже давно лишь обертка над libxcb, так что в libX11 преобразовывать 4 байта в 2 и так отдавать клиентам. Заодно подстегнет переход на XCB.

XVilka ★★★★ ()

Чет я не понял абзац с «P.S.», о каком звуке идёт речь? Или афтар шютник?

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

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

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

Чет я не понял абзац с «P.S.», о каком звуке идёт речь? Или афтар шютник?

Отчасти шютник. Но если окна расположены в 3d пространстве, то и на звук должны налагаться преобразования, приводящие к изменению громкости на разных наушниках и затуханию звука от удалённых источников. Можно ещё доплеровский эффект добавить, который, между прочим, в OpenAL учитывается.

quiet_readonly ★★★★ ()

Напоминаю излишне оптимистичным пользователям: для ати и нвидиа отстутсвиют блобы.

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