LINUX.ORG.RU

Какие для Вас самые важные недостатки X-сервера и/или протокола X11?

 


1

4

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

Поскольку у меня самого продвинутого железа типа экрана в 4к и пр. нету, я решил спросить посетителей ЛОРа, что им наиболее мешает жить с текущей реализацией X-сервера.

Возможно по выявлению самого неприятного мета-бага (пишите в ответах версию х сервера и ДЕ/wm, и прочие подробности, желательно со ссылками на баги в багтрекерах) удастся собрать деньги на оплату (а скорее - также частичное дообучение) работы C developer(s).

Но сначала давайте попробуем определится, что же конкретно не работает. Одним из первых я поставил HDR потому что на phoronix кто-то утверждал, что поддержка hdr потребует-таки переписывания или обхода значительной части Х протокола. Проблема в том, что я где-то читал что абстрактные пиксели в Х могут быть и 16 бит на канал, и к тому же рабочие станции SGI (mips) явно умели в 10 бит на канал, а работали там собственная реализация X, glx, да OpenGL (ещё 1.2 или около того). Ссылки надо заново искать, но я это сделаю :)

edit: https://marc.info/?l=freedesktop-xorg-devel&m=148338322225159&w=2

вот тут обсуждение HDR (в 2016-ом) еще есть пдф-ка с XDC 2017 про Deep color.

DPI stuff https://www.mail-archive.com/xorg-devel@lists.x.org/msg57714.html

SGI hardware (10/12 bits per component) http://www.sgidepot.co.uk/ir_techreport.html

  1. Всё устраивает 222 (48%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Тиринг 117 (25%)

    ************************************************************************************************************************************************************************

  3. Сложности работы двух мониторов с разным dpi или частотой обновления 108 (23%)

    ***********************************************************************************************************************************************************

  4. Неплавность анимаций или ввода 84 (18%)

    *************************************************************************************************************************

  5. Устаревшая кодовая база, с которой сложно работать 76 (16%)

    *************************************************************************************************************

  6. Дробное масштабирование 70 (15%)

    ****************************************************************************************************

  7. Задержка (latency) в несколько кадров 64 (14%)

    ********************************************************************************************

  8. Поддержка HDR (high dynamic range, 10bit/channel or more) 59 (13%)

    *************************************************************************************

  9. Изоляция приложений 47 (10%)

    *******************************************************************

  10. Поддержка переменной частоты развертки (vrr) 43 (9%)

    *************************************************************

  11. Невозможность (?) сохранить состояние сессии при обрыве 32 (7%)

    **********************************************

  12. Отсутствие поддержки новых версий GL в протоколе glx 32 (7%)

    **********************************************

  13. Автоподключение внешнего GPU 31 (7%)

    ********************************************

  14. Мультикасание, трансформация координат ввода 24 (5%)

    **********************************

  15. Отсутствие поддержки множества слоёв (поверхностей) видеовывода 19 (4%)

    ***************************

  16. Другое 14 (3%)

    ********************

  17. Нестандартные устройства ввода (указать какие) 6 (1%)

    ********

Всего голосов: 1048, всего проголосовавших: 461

★★★★

Проверено: hobbit ()
Последнее исправление: Andrew-R (всего исправлений: 8)

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

Хочешь vsync в игре и vrr? Надо обойти композитинг и никакого TearFree в xorge. Подход и способы обхода композитора зависят от DE.

Обход для полноэкранных игр есть в любом современном крупном композиторе ичто то там крашится и хреново работает только в гноме, но они сами себе создали проблем. В КДЕ обход для полноэкранок это поведение по умолчанию ещё со времён кде4 и никаких серьёзных проблем там нет. По крайней мере это работает лучше чем в винде, особенно всплывающие окна поверх полноэкранной игры.

В вейленде всё просто работает. И композитинг, и врр, и в играх задержки нет.

Учитывая что 9 из 10 игр работают через Х-вайланд? И учитывая что нет вайлаеда где просто работает, есть как минимум 4 разных вайланда и каждый со своими детскими болезнями, недоделками и просто тупыми ляпами. О, и ещё надо убедиться что ваше железо поддержано именно этой версией вайланда и что нужный вам софт с ним совместим.

Если тиринг самая раздражающая проблема Х-сервера, то вайланд просто ещё не дорос до того чтобы бороться с подобными мелочами, пусть сначала работать начнёт.

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

Я тоже не вижу тиринга на ютубе потому что смотрю его через youtube-dl+omxplayer (т.е. он не возможен в принципе). И при пролистывании в браузерах и документах я не вижу тиринга потому что пролистывание не плавное. И в эффектах kwin я его не вижу потому что xrender а время анимаций везде где только можно выкручено в 0. И в анимациях qt потому что они рисуются в достаточно мелких областях и рваться тем нечему... Короче в интерфейсе у меня тиринга нет хотя я с ним даже не борюсь. И в полноэкранном Дум2 (pr-boom+) потому что я подобрал размер области и скорость игры такой, чтобы цпу справлялся.

А вот где он есть, так это если начать воспроизводить анимацию достаточно крупную чтобы цпу захлебнулся и не успел отрисовать кадры. Например досбокс (в досе нет никакого vsync), или банеры в браузере когда цпу захлёбывается, или 3д-бенчмарк в окне с просадкой фпс ниже частоты экрана. И даже в видео через vlc и mplayer с отрисовкой на цпу. Т.е. все те ситуации, когда хорошо сделать железо в принципе не может и я должен выбрать между тирингом или тормозами и пропуском кадров. Лично я выбираю тиринг, но большинство всё таки берёт железо помощнее и видеокарту пофичастее, с ускорением.

Кстати, я что то не слышал от вайланд-фанатов внятного ответа: а что же делает вайланд когда кадр нужен вот сейчас, но ещё не отрисован? А если не 1 а сразу 3 кадра? А vvr нету, цпу перегружен и видеокарта не справляется? Этот вопрос почему то стараются не поднимать.

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

… там крашится и хреново работает только в гноме

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

Учитывая что 9 из 10 игр работают через Х-вайланд?

Да.

… пусть сначала работать начнёт.

В совокупности он уже лучше иксов работает. Тяжело после вейленда иксами пользоваться.

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

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

Ок.

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

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

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

Почему не реализовано?

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

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

Ну вот пусть и приходят когда оно вымрет. Всего то лет 5 подождать осталось.

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

Понятия не имею.

А в более грамотно спроектированной системе ответ будет «должно работать нормально, в худшем случае будут мелкие проблемы».

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

Кажется вы уже признали что у вайланда нет стандартного api для захвата скриншота, видео и перехвата клавиатуры, а в каждой отдельной реализации есть свой собственный костыль. И качественной поддержки софта не возникнет пока весь этот зоопарк не вымрет, код не будет отрефакторен а api стабилизированы. Т.е. мы выходим на то же самое, как выглядел Х-сервер 2010-ого года в 1995.

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

Кстати, я что то не слышал от вайланд-фанатов внятного ответа

Может, просто не стоило называть людей «вайланд-фанатами»?

а что же делает вайланд когда кадр нужен вот сейчас, но ещё не отрисован?

Если он ещё не отрисован, то и не отображается.

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

у вайланда нет стандартного api для захвата скриншота

Есть: см. xdg-desktop-portal.

и перехвата клавиатуры

Если имеются в виду глобальные сочетания клавиш, то недавно добавили.

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

В mpv и vlc так и работает.

Точно не так. И oGL по сути самый бесполезный способ воспроизводить видео. Обычно идёт прямое обращение к видеодекодеру через какой нибудь vaapi или openmax чтобы он отдал битмапы кадров плееру... И вот там то и начинается самое интересное! Окно с разжатой анимацией обрабатывается сначала тулкитом а потом композитором, а потом становится частью кадрового буфера экрана. Короче в итоге вся работа на композиторе. Но нектороые видеодрайвера не гоняют битмапы а шлют ссылки на видеопамять и тогда композитор может справиться легко (или заглючить и вообще ничего не воспроизвести).

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

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

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

Читай:

хотя я с ним даже не борюсь.

Я обмазался горой костылей чтобы выжать из железа максимум скорости и минимум лагов. Тиринг у меня был и есть, но это настолько незнаительная проблема, что я даже не стану проыерять как работает галочка vsync в композиторе. Ведь

потому что смотрю его через youtube-dl+omxplayer (т.е. он не возможен в принципе)

Там где это важно - его нет и быть не может.

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

просто не стоило называть людей «вайланд-фанатами»?

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

Если он ещё не отрисован, то и не отображается.

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

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

Я успел застать времена, когда не было драйвера под intel GMA3150. И даже собирал ядро для дебиана чтобы вместо «всё ну очень плохо» можно было сидеть на vesa в по крайней мере родном разрешении и с псевдопрозрачностью в терминале и cairodoc. А через пару лет всё появилось, и компиз заработал, и опенарену можно было гонять без ограничений.

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

у вайланда нет стандартного api для захвата скриншота

xdg-desktop-portal.

видео

В Wayland нет и не будет. Есть pipewire.

и перехвата клавиатуры

А virt-viewer у меня, по-твоему, как работает?

И качественной поддержки софта не возникнет

OBS вполне качественно поддерживает Wayland. Zoom тоже. MS Teams нормально мне экран транслирует. Что не так-то? Нельзя через spectacle делать снимок экрана? Ужас-ужас.

пока весь этот зоопарк не вымрет, код не будет отрефакторен а api стабилизированы.

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

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

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

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

Тиринг не связан с нехваткой производительности.

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

И тогда должен возникнуть тот самый лаг, подвисание или пропуск кадров

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

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

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

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

Потому что ты использовал штатную программу. Запрос к которой смысла делать нет.

Вот OBS, например, сторонняя программа, и при первом запуске меня mutter спрашивает разрешения на запись.

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

Так ещё лучше. Можно будет менять транспорт безболезненно.

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

Насколько я знаю ни в какую версию малины не ставился i7 6700HQ.

Но вот допустим его видеокарта не умеет ссылки на видеопамять и драйвер стал говном... Тогда надо пропихнуть декодированный кадр по конвейру плеер-композитор-Х-видеокарта, с 4 копированиями данных, и всё это последовательно в 1 поток. Точнее в полпотока потому что гиперпоточность, а вторая половина ядра занята другим. Вполне может и не справиться, это всё таки не тредрипер и даже не восьмиядерник 8-9-ого поколения.

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

Кстати, я что то не слышал от вайланд-фанатов внятного ответа: а что же делает вайланд когда кадр нужен вот сейчас, но ещё не отрисован? А если не 1 а сразу 3 кадра? А vvr нету, цпу перегружен и видеокарта не справляется? Этот вопрос почему то стараются не поднимать.

Хороший вопрос,но это не ко мне,я ж не вэйландофанатик)

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

Тиринг — это не про пропуск кадров, тиринг — это про недоотрисованные кадры, которые лезут на монитор.

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

Я обмазался горой костылей

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

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

OBS да, а ffmpeg, mplayer, vlc?

Нельзя через spectacle делать снимок экрана? Ужас-ужас.

Да просто штаная гномоутилита убогая потому что писалась дегенератами. Её нельзя использовать, с ней можно только страдать. А xfce ещё не портировали свою на вайланд, насколько я знаю.

а не тащить неудачные решения потом 40 лет.

Так уже скоро 10 лет как тащат неудачные решения, и ещё столько же будут. Проблема в том, что красношапки пихают эту пре-альфу в продакшен и продвигают в качестве готового стандартного решения.

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

люди хотят чтобы работало искаропки.

Ну, как я и сказал, вайланд искаропки будет работать лет через 5-10, если повезёт.

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

На той же малинке ты имеешь либо слайдшоу, либо ставишь Xv и ловишь тиринг. Либо ставишь специальный костыль именно для легковесных иксов на малинке.

Raspberry Pi? Там настолько медленный видеочип, что он не пригоден для десктопного использования. Даже на смартфонах быстрее.

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

Именно с ней. Монитр выдаёт 60 кадров, анимация в браузере 38, где взять недостающие? А если vsync браузером не поддерживается?

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

Пропуск кадров – это когда какие-то

Это когда плеер обязан выдавать 30, но отрисовать успел только 27, а 3 просто отбросил. И выглядит это ровно аналогично «Будет откладывание отображения кадра до окончания его отрисовки.» - весьма некрасиво. Меня это раздражает не меньше чем тиринг, а вас?

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

OBS да, а ffmpeg, mplayer, vlc?

Пусть добавляют поддержку xdg-desktop-portal. Mpv вон, 11 бекендов для воспроизведения добавили, что им ещё один для записи добавить?

Да просто штаная гномоутилита убогая потому что писалась дегенератами.

Зевая… В общем, wayland плохой, потому что гном неудобный, вот понятно.

Так уже скоро 10 лет как тащат неудачные решения

А в иксах 40, и дальше тащить будут.

Проблема в том, что красношапки пихают эту пре-альфу в продакшен и продвигают в качестве готового стандартного решения.

Иксы живы только потому, что тонна опенсорсных программистов заботливо укладывает костыли для поддержки этого протокола. Смотри, как mpv красиво обходит тиринг в x11. Смотри, как DE создают каждый свой композитор для того, чтобы обойти ограничения иксов, в том числе тиринга. Смотри, как каждый DE создаёт свою переключалку раскладки, извращается ради плавных анимаций и так далее.

Если шапка протолкнёт эту альфу в продакшен, тонна опенсорсных программистов будет также заботливо укладывать костыли для поддержки Wayland. Только есть понимание, что количество костылей существенно снизится, поскольку протокол не имеет врождённых заморочек иксов.

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

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

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

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

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

Это когда плеер обязан выдавать 30, но отрисовать успел только 27, а 3 просто отбросил. И выглядит это ровно аналогично «Будет откладывание отображения кадра до окончания его отрисовки.» - весьма некрасиво. Меня это раздражает не меньше чем тиринг, а вас?

Тиринг — это когда у тебя поверх дорисованного кадра вылезает недорисованный. Не-тиринг, когда не вылезает. Смена кадров всё равно происходит с определённой скоростью смены кадров, только в одном случае она происходит посередине отрисовки кадра, а в другом — смещается по времени по окончании отрисовки.

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

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

Чисто теоретически он очень быстрый. У него достаточно производительности чтобы рисовать сцены уровня hl2 или кодировать fullHD 60fps в реальном времени, но... Дрова дерьмо, стандартные api не реализованы, всё в итоге ложится на софтовый openGL в 2 ядра цпу. А цпу действительно убогий. В случае vc6 я не заметил большого прогресса, разве что openGL таки реализовали но зато потеряли все omx-приложения.

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

Именно с ней. Монитр выдаёт 60 кадров, анимация в браузере 38, где взять недостающие?

Это даже близко не так работает. Тиринг может быть, а может и не быть хоть с 1 fps на 60 гц мониторе, хоть с 600 fps. Когда анимации 38 fps на мониторе 60 гц будет не тиринг, а статтеринг (на 60 гц нормально ляжет картинка с 30/20/15/10 fps и т.д).

А если vsync браузером не поддерживается?

А vsync не нужен для борьбы с тирингом, достаточно рисовать только готовые кадры.

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

Вирус внутри OBS? Ну тады Ой. Только тогда уже причём тут Wayland.

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

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

Попытка объявлена проваленой.

Из плюсов - лиса несколько более экономично проигрывает видео через vaapi. Там где иксовая лиса ест 8.5 ватта вейландовая 7.7 ну там +-. В общем то неплохо, браво вейланд это успех.

Из минусов. Открыт к комментам - возможно я что-то не нашел.

Нормальной менюшки нет. Есть набор разных поделок каждая из которых живет на собственном баре - но бары с менюшкой не в состоянии приютить у себя blueman и nm-applet, а waybar который при своей уродливости и геморройности по настройке не имеет менюшки. Можно пользоваться панелью из флэшбека или мате или еще там чего - но это опять же не полностью совместимо. И по любому надо держать 2 панели - waybar для совместимости с appindicator и что-то еще для меню. Запускать что-то из командной строки нельзя - пишет не могу открыть дисплей wayland-1.

Как гасить экран при закрытии крышки - шут знает. Перейти в suspend не вариант. Нужно именно blank screen.

Громкость как регулировать? pavucontrol - работает отлично, но он чебурашит постоянно процессор, не та прога которую хочется держать открытой. А легковесного апплета не нашел. Яркость регулировать - тоже.

Ну и звездец всех звездецов и абсолютное no-go - virtualbox грузит венду в чорный экран. Судя по курсору и звуку венда весело завелась - но вяленд сломал отрисовку. Бокс свежайший.

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

Выпадающий терминал завести так и не удалось. То есть они вроде бы все запускаются - но как-то все теряют привязку к клавише.

Наверное все это как-то лечится - но общее впечатление зело грустное. Вяленд пока годен только для гномосеков. Относительно годен для КДЕшников которые сидят на самом свежем кеде. Всех остальных там пока ждет боль и страдания. А учитывая что все бабло по вяленд-разработке вливается в гномосечье гнездо - а все остальное пилится в свободное время парой энтузиастов - скорого продвижения не предвидится.

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

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

Смена кадров всё равно происходит с определённой скоростью смены кадров, только в одном случае она происходит посередине отрисовки кадра

vsync в разных формах это когда новый кадр накладывается не поверх существующего, а в отдельный буфер. И потом мгновенно замещает тот, который будет отправлен на экран к следующему дедлайну. Нет разрывов если композитор выполнил свою работу! И сейчас у всех так. Но по факту не все её выполняют.

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

хоть с 600 fps

И чисто теоретически он там будет, но как ты увидишь разрыв со смещением в 1/10 пикселя? Проблема когда рисуется недостаточно кадров, если их в избытке то проблема исчезает.

достаточно рисовать только готовые кадры.

Просто проблема будет называться не «тиринг» а «лаги и фризы». И она тоже неприятная.

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

Потому что ты использовал штатную программу. Запрос к которой смысла делать нет.

Где и какими технологиями проходит барьер безопасности между штатной программой и нештатной?

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