LINUX.ORG.RU

Нужно чинить иксы

 , , , ,


5

5

X11 robustness: DRI3 без аппаратного ускорения (комментарий)

Сабж

Судя по всему последний раз проблема поднималась в 2018, потом все как-то забыли - да и решения там были весьма сомнительные предлагались - копмозитинг предлагается вынести в иксы, тем самым прибив модульность

В общем, без композитинга всё работает как надо, present через damage вызывает fbCopyNtoN на экранную поверхность, present отрабатывает, пусть и с тирингом.

С композитингом же всё сильно хуже - present делает такое же копирование, но в поверхность окна, для которой работает composite redirect.

Без изменений в композиторе ничего сделать не выйдет - сейчас в протоколе composite композитор получает пиксмапу окна и ожидает что после damage event в ней будут актуальные данные. Это совершенно несовместимос с подходом dri3/present, который привязвает несколько пиксмап к окну и требует лишнего копирования.

Изначальная идея в present предполагала отправлять Notify в композитор. Вероятно от неё отказались т.к это неэффективно - иксы здесь занимаются перессылкой событий и fence между процессами.

В здесь целом напрашивается получение дескриптора для отправки событий композитору напрямую, но это тоже выглядит как какой-то костыль. Но в принципе, dri3 передаёт файловые дескрипторы текстур - почему он не может так же передавать дескрипторы некоего канала с композитором? Звучит как вполне разумное решение, которое будет полезно и для xwayland т.к можно будет передать контроль wayland-композитору напрямую, минуя процесс Xwayland

VK_KHR_swapchain помимо fence оперирует с семафорами. Может можно вообще timeline semaphore задействовать? Но в любом случае надо как-то передавать индекс буфера. Расширение протокола позволит задействовать все возможности Vulkan при условии поддержки композитором. Так же vulkan’овые объекты доступны и в opengl

В общем интересно, остались ли тут разбирающиеся в устройстве иксов и vulkan люди, может кто-нибудь может подкинуть идеи

Возможная идея, что можно пересылать в композитор: https://github.com/notpeelz/monado/blob/main/src/xrt/ipc/client/ipc_client_compositor.c#L737 (freedesktop gitlab опять лежит) Здесь есть 2 варианта функции - с семафорой (включая timeline) и просто с fence. Причём создаётся семафора довольно просто - в vulkan queue отправляется пустой Submit с семафорой, которая ожидается уже другим процессом. То есть даже какая-то дополнительная поддержка со стороны приложения не нужна - дальше вся синхронизация присходит прямо в gpu.

P.S дополнение, всем фанатам и просто пользователям Вяленного, набежавишим в тред. Современный графический стек, предполагающий на каждый чих использовать opengl на клиенте немного несовместим с современными GPU, которые могут потерять все контексты в любой момент на любой чих в шейдере в любом приоложении. И даже если сделать перезапуск композитора с переподключением - это нифига не поможет от падения всего десктопного софта, который вынужден рисоваться через opengl. Почему-то на windows есть GDI и там нет этой проблемы. В иксах же есть свой аналог GDI и потенциальная возможность свести все эти отказы к единой точке, которую устранить. Достаточно избавиться от glamor в сервере, можно даже попытаться переписать его на vulkan, добавив обработку потери контекста. Я сейчас категорически не могу рассматривать рендеринг всех десктопных приложений на клиентах через opengl т.к это создаёт огромные неудобства при gpu reset. Да, можно сделать софтовый wayland композитор и нечто похожее на мой костыльный патч в modesetting, но нормально решить проблему потери контекстов просто нельзя - в архитектуре это просто не предусмотренно. Так что можно хвалить wayland, он прекрасно справляется с медиазадачами вроде 3д десктопа в виртуальной реальности, но превращается в тыкву, когда GPU не может работать

★★★★★

Последнее исправление: mittorn (всего исправлений: 5)

по идее сокеты можно создавать через socketpair со стороны иксов, а потом передавать в клиент или композитор. По сокетам могут передаваться дескрипторы объектов синхронизации и номер картинки. Как лучше синхронизировать всё со стороны композиторов - не знаю, я пока их не писал. По идее мы ожидаем fence в xpresent, который делает композитор и по завершнии сигналим все idle fence окон, которые делали present. Но вот что делать с wait фенсами? Сам композитор не может отправить заранее command-buffer’ы всех окон - ведь он не знает, какие окна обновятся в этот кадр, а какие нет - он генерирует кадр если хотя бы одно из окон обновилось, для всех остальных продолжая рисовать старую пиксмапу. То есть я пока не вижу применения wait семафоре. Во всяком соучае в пределах модели синхронизации vulkan, которая представляет из себя очередь.

mittorn ★★★★★
() автор топика

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

DRI3 придумывался вялендонутыми пациентами. Если что, то проприетарный NVidia драйвер в него не умеет от слова совсем.

В общем интересно, остались ли тут разбирающиеся в устройстве иксов и vulkan люди, может кто-нибудь может подкинуть идеи

Я бы сходил к разработчикам picom в Discord. Там один (или два) человека даже делали vulkan backend для композитора. Вот у них нужно спрашивать, а на этом форуме в основном смузихлёбы.

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

Пора переходить на Wayland.

Вечно сырое не-модульное г-но с кучей самопальных стандартов. Либо допиливайте то чего нет в иксах, либо делайте им нормальный аналог. Хватит х-ней страдать.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)

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

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

Иксы ещё лет на 20, потом скорее всего все т.к. сопровождать их никто уже не хочет.

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

За 20 лет вейланд задепрекейтят.

Как Nvidia запилят нормальную поддержку вайленда

Я надеюсь вы понимаете, что у вейланда нету единого сервера. И по факту вейланд - это спека и никакого вейланда не существует. То есть делать поддержку не под чего. А то что Wayland-сервера заточены под то как сделано в mesa - проблемы негров.

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

Ну я бы не сказал что dri3 сам по себе плох. Это даёт возможность драйверу аллоцировать текстуры как он хочет и нативно реализовать swapchain, а не так, как хочет сервер. В случае с dri2 же внутренние механихмы драйвера выносятся в сервер. Например, на dri2 я не могу выводить линейную текстуру на экран и единственный гарантированный способ его использовать - gbm. dri3 же не привязан к gbm и может испрльзовать dmabuf напрямую, аллоцируя их в vulkan драйвере

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

Есть смишнявка, которая прекрасно отражает суть Rust

а вообще композиторов типа этого:

https://github.com/mahkoh/jay

полно. Только вот я не уверен что там реализация wayland своя, а не какрй-нибудь wlroots с rust биндингами…

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

Да кому нужна эта невидия

У них монополия везде, где нужны cuda ядра. А это графика, расчеты, нейронки. Пока в другие видеокарты не завезут что-то похожее, Nvidia всегда будет в топах.

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

Да кому нужны эти cuda ядра?

…сказали в AMD, грустно смотря на свои 11% с копейками на рынке видеокарт. И процент продолжает уменьшается, раньше были 20% с лишним в 2020 году. На фоне деграднувшей нвидии умудраются пробивать дно.

Без шуток, мне GPU без возможности запустить тот же Stable Diffusion и другие нейронки не нужна.

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

Да кому нужна эта невидия, если она даже dri3 не умеет?

Вот с появлением этого DRI3 начался весь трах на интеловских встройках. Старые драйвера (все кроме modesetting) в этот DRI3 не умеют, и без DRI3 работать тот же dxvk не будет. В modesetting вообще не реализован v-sync и без композитинга будешь ловитить тиринг на ура (ок, уже реализован, но только в апстриме). Типичная вялендонутая технология.

А на нвидии без DRI3 всё нормально работает.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)

Идёте уже хоженным путём.

Напомню, что wayland — это детище создателя DRI-2.0, появившееся в результате попыток хоть как–то оптимизировать пайплайн рендеринга в иксах. От осознания безнадёжности ковыряния в этом нагромождении костылей на костыли — исправляешь в одном месте, отхлёбывает в другом. Потом уже появились DRI-3.0, в том числе и потому что нвидия сама принялась факи крутить в сторону gbm.

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

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

Вейленд не предлагает слой совместимости с оконными менеджерами иксов, не имеет поддержки драйверов тачскрина NextWindow, скорость отрисовки на юсб мониторах на чипе displaylink около 1 fps.

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

оконными менеджерами иксов

Теперь они тоже не нужны.

не имеет поддержки драйверов тачскрина NextWindow, скорость отрисовки на юсб мониторах на чипе displaylink около 1 fps.

Нет драйверов - пишите. Это Open Source. Не хотите писать - ждите пока кто-нибудь напишет.

Обычные люди юзают ЖК мониторы и мышки.

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

А можно просто не ломать то что уже написано и работает.

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

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

А можно просто не ломать то что уже написано и работает.

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

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

«Москва не сразу строилась» (c).

Wayland только в последние годы допилили до нормальной работы. Пока что без специфических юзкейсов.

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

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

Пока что без специфических юзкейсов.

В основном нормально всё с этим. Иксы тоже много чего принципиально не могут: больше четырёх раскладок, больше 255 кодов клавиш, скриншоты с выпадающими меню, нормальная изоляция окон приложений, нормальные глобальные клавиши, быстрый композитинг, быстрый VSync, HDR, мониторы с разным DPI и т.д. Часть этих проблем можно обойти, но исправлять их никто никогда особо не рвался, будем честны.

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

множество композиторов.

Композиторы не нужны, это должно быть на гораздо более низком уровне абстракции. Погромист UI не должен заниматься программированием текстур вывода оконных объектов.

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

«Москва не сразу строилась» (c).

И изначально начала строится неправильно. Та же пульсаудио изначально имела средства совместимости со всеми старыми приложениями, а тот же pipewire прямо из коробки заменяет пульсаудио. У вэленда вместо слоя совместимости со всем софтом гулькин хер под названием xwayland, с которым ни драйверы ни утилиты настройки экрана работать не могут, да тот же тач работает по-разному в wayland приложениях и xwayland.

Т.е. сам изначальный подход вейленда говно.

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

старые приложения пускать через слой совместимости

Где мой слой совместимости с драйверами тачскрина и юсб мониторов и видеокарт? Где слой совместимости с xrandr?

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

Мне как пользователю вообще насрать, что там под капотом, если все что работало до этого будет работать как раньше. Но в том и дело, что не работает.

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

Вы точно понимаете что такое композитор? Непосредственно к UI он никакого отношения не имеет.

Wayland'овый композитор реализует частично фичи иксов, а также фичи оконного менеджера и таких композиторов как picom. 3 в одном. Что также положительно влияет на скорость, поскольку отдельным приложениям надо обмениваться данными по шине, а у одного единственного приложения эти данные и так есть.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)

Посто надо понимать, что вяленд в вечной альфа-бете, тому що самые агрессивные вяленофанатики это обычно (ментальные)подростки, наяривающие на причёски в каком-нибудь 10bit 8К онимэ, транскодиоованном хз кем и как на купленной на сэкономленные зафтраки ГПу 5090 с 128 гигами памяти или что-нибудь такоэ.

Им просто не нужно, что бы оно полноценно работало как это нужно нормальным людям.

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

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

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

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

Где мой слой совместимости с драйверами тачскрина и юсб мониторов и видеокарт? Где слой совместимости с xrandr?

Я говорил про приложения. То факт, что кривущие нативные игры работают с XWayland как родные, для меня означает, что всё окей. XTerm и прочие артефакты восьмидесятых работают как и раньше, тут тоже придраться не к чему. От причудливых идей вроде запуска иксовых WM под Wayland-композитором я не страдаю, хотя в принципе это возможно (примерно так же полезно, как запуск Doom на тесте на беременность, но вдруг кому надо).

Экзотических устройств ввода/вывода у меня нет, так что комментировать жалобы на отсутствие каких-то драйверов я не буду.

Мне как пользователю вообще насрать, что там под капотом, если все что работало до этого будет работать как раньше.

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

Но в том и дело, что не работает.

Невезуха :)

anonymous
()