LINUX.ORG.RU
ФорумTalks

В Wayland добавлена возможность отключения вертикальной синхронизации

 


1

3

https://www.opennet.ru/opennews/art.shtml?num=58160

В состав набора wayland-protocols добавлено расширение tearing-control, дополняющее базовый протокол Wayland возможностью отключения в полноэкранных приложениях вертикальной синхронизации (VSync) с кадровым гасящим импульсом, применяемой для защиты от появления разрывов при выводе (tearing).

Шах и мат!

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

Ну-да ну-да, поэтому поцоны из вейланда сейчас запиливают дробное масштабирование во viewporter.

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

Это народ не разобрался в причине и сваливает вину на вейленд.

Чо? То что тулкит занимается, мы в курсе. Я о том, что в протоколе там поле int и масштабирование просто не может быть дробным.

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

Ещё один не знающий матчасть…

Да. Ты.

Даже показывал снимок экрана с VLC с «невозможным в Wayland» масштабированием 150%, запущенным в Wayland-сеансе GNOME.

Ты же баклажанище лютое. Давай я тебе объясню ещё раз, что происходит на твоём скриншоте, чтобы ты понял: когда ты выставляешь масштабирование 150% в Wayland, VLC рендерит не в 1.5 раза большую картинку. VLC рендерит в 3 раза больше, после чего композитор уменьшает картинку в два раза (150% == 3/2). А всё почему? Потому что в протоколе поле имеет тип int.

Для именно дробного масштабирования, чтобы Qt/VLC рендерил сразу в 1.5 раза больше без последующего уменьшения, протокол запилили только сейчас (https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143), поддерживается он далеко не всеми (только wlroots пока вроде), и будет ли всеми поддерживаться – хер его знает, возможно опять обосрутся где-то. Wayland – это вообще история о том, как обосрать себе штаны на ровном месте, а потом 14 лет ходить с гордым видом что всё ок, пока от тебя люди шарахаются из-за чудовищной вони.

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

Ну-да ну-да, поэтому поцоны из вейланда сейчас запиливают дробное масштабирование во viewporter.

Я о том, что в протоколе там поле int и масштабирование просто не может быть дробным.

Да, int. Да, это вызывает проблемы. Да, это будут менять.

Только вот масштабирование в вейленде уже сейчас работает лучше иксового, включая случаи использования дробного масштабирования. Одна из причин, почему я на него перешел (два монитора, 4k 24-дюйма (200% масштаб) и 1440p 27 дюймов (135% масштаб)).

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

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

Если тебе мыться нечем, то да, мыло Wayland предоставляет в огромных количествах тут.

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

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

Если тебе мыться нечем, то да, мыло Wayland предоставляет в огромных количествах тут.

Вот о том я и пишу, что люди приписывают левые проблемы отсутствию дробного масштабирования.

Открываешь сессию kde в вейленде, выставляешь масштабирование хоть 105%, до перезапуска приложений будет 105% с мылом, после 105% без мыла. И всё летает даже на древнем железе с hd3000 встройкой.

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

Вот о том я и пишу, что люди приписывают левые проблемы отсутствию дробного масштабирования.

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

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

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

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

Так я тебе и пишу, что:

  1. Мыло не из-за отсутствия дробного масштабирования в протоколе.

  2. Оно уже сейчас работает лучше, чем в иксах. Выставляешь дробное масштабирование в кде и никакого мыла.

Проблема мыла не имеет ничего общего с проблемой отсутствия дробного масштабирования в вейленде.

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

Проблема мыла не имеет ничего общего с проблемой отсутствия дробного масштабирования в вейленде.

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

Впрочем, в лялексе всё так. Раньше вот были растровые шревты, которые в принципе не могут быть мыльными, потому что мапятся напрямую на пиксели экрана и не требуют сглаживания. А потом поддержку растровых шревтов выпилили из Pango за каким-то хреном, и теперь можно хоть обмылиться. Лялекс не только не развивается, он ещё и деградирует. И это грустно.

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

Проблемы мыла не имеет ничего с масштабированием растра, из-за которого и появляется мыло.

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

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

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

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

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

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

Наглядно про Wayland: Тем, кто не верит, что иксы портят картинку.

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

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

Только в иксах можно выставить DPI для экрана и тулкиты отрендерят соответственно, поэтому такой проблемы нет.

Тулкиты и в вейленде рендерят соответственно, если умеют. А гтк и под иксами ты увеличивал в целое число раз а затем делал дробное масштабирование xrander-ом. Только пользоваться таким масштабированием было мучительно и проще было монитор сменить.

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

ArchLinux: sway + xdg-desktop-portal-wlr

В zoom (но обязательно нужно установить XDG_CURRENT_DESKTOP=gnome, иначе эта луддитская поделка будет верещать, что твой линукс де-шкой не вышел, тем не менее с этой переменной рботает) и в Discord (веб версия через Firefox) шарится.

Skype – не знаю, возможно.

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

Ну, интерфейс может и свежий, но жрёт VRAM и процессорное время GPU как не в себя. Игруны осуждают.

robus ★★★★★
()
Ответ на: комментарий от i-rinat

А комит который, например, переименовывает переменную Prigran в Program настолько же значим как комит реализующий, например, поддержку relative pointer input events?

Я к тому, что комиты считать и на их количество ссылаться – попахивает буллшитом немного.

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

Кому-то хочется красивостей, а кому-то хочется что бы работало с незаметными глазу задержками — последних авторы ГОНОМа за пользователей не считают. Я помню, даже, эпизод когда они внедрили полу-секундную задержку при переключении языка на манер венды --- потом, правда, убрали --- но осадочек остался.

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

Да вот что-то ради мудацкого дискорда и скайпа, не хочется менять дистрибутив(так же и обновляться), пока на 20.04 посижу.

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

Ну, интерфейс может и свежий, но жрёт VRAM и процессорное время GPU как не в себя. Игруны осуждают.

А пруфы-то есть? Потому что я сравнивал gnome-shell и sway, и разницы не в потреблении ресурсов я вообще не заметил.

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

Кому-то хочется красивостей, а кому-то хочется что бы работало с незаметными глазу задержками — последних авторы ГОНОМа за пользователей не считают. Я помню, даже, эпизод когда они внедрили полу-секундную задержку при переключении языка на манер венды — потом, правда, убрали — но осадочек остался.

Удивительно, люди пилящие opensource принимают решения, которые кому-то не нравятся. НИЧЕГО СЕБЕ, ВОТ ЭТО ДА.

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

Окей, ждём от тебя более подробного исследования.

i-rinat ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ты же баклажанище лютое. Давай я тебе объясню ещё раз, что происходит на твоём скриншоте, чтобы ты понял: когда ты выставляешь масштабирование 150% в Wayland, VLC рендерит не в 1.5 раза большую картинку. VLC рендерит в 3 раза больше, после чего композитор уменьшает картинку в два раза (150% == 3/2). А всё почему? Потому что в протоколе поле имеет тип int.

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

VLC (на самом деле Qt) рендерит именно в 1,5 раза большую картинку. Все эти «отрендерить в N раз больше, после чего уменьшить композитором в M раз» являются экспериментальной функцией в Mutter, требуют явного включения в настройках, и на приведённом снимке экрана отключены по умолчанию.

Причём доказать это элементарно:

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

Для именно дробного масштабирования, чтобы Qt/VLC рендерил сразу в 1.5 раза больше без последующего уменьшения, протокол запилили только сейчас (https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143)

Этот протокол лишь позволяет композитору сообщать клиенту, с каким масштабом ему желательно рендерить. Самому рендерить.

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

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

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

Это круто, но этот метод не имеет отношения к вяленду (или иксам) как таковому. Более того, так нельзя масштабировать уже запущенные процессы, потому как ты не можешь поменять им переменные окружения, и поэтому так делать вообще не нужно. Разве что если ты хочешь перезапускать весь сеанс не только когда меняешь разрешение экрана, но и когда меняешь масштаб, что весьма и весьма тупо. Так можно вообще сказать, что вяйланд вообще не умеет в масштабирование.

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

Это круто, но этот метод не имеет отношения к вяленду (или иксам) как таковому

Именно!

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

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

Масштабирование иксами — это xrandr --scale, но оно страдает теми же проблемами, что и любое масштабирование такого рода: мылит, лагает и глючит.

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

Именно так и происходит в, например, KDE под X11 при изменении масштаба: параметры применяются только после перезапуска окружения.

Замечу, что в том же GNOME даже под X11 параметры масштабирования применяются сразу и в оболочке, и в GTK-приложениях, безо всякого перезапуска.

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

GNOME:

systemd-+-NetworkManager---2*[{NetworkManager}]
        |-accounts-daemon---2*[{accounts-daemon}]
        |-colord---2*[{colord}]
        |-dbus-daemon
        |-gpg-agent
        |-gpu_oberver.sh---sleep
        |-gsd-a11y-settin---3*[{gsd-a11y-settin}]
        |-gsd-datetime---3*[{gsd-datetime}]
        |-gsd-housekeepin---3*[{gsd-housekeepin}]
        |-gsd-print-notif---2*[{gsd-print-notif}]
        |-gsd-printer---2*[{gsd-printer}]
        |-gsd-rfkill---2*[{gsd-rfkill}]
        |-gsd-screensaver---2*[{gsd-screensaver}]
        |-gsd-sharing---3*[{gsd-sharing}]
        |-gsd-smartcard---4*[{gsd-smartcard}]
        |-gsd-sound---3*[{gsd-sound}]
        |-gsd-usb-protect---3*[{gsd-usb-protect}]
        |-gsd-wwan---3*[{gsd-wwan}]
        |-login---bash---gnome-shell-+-Xwayland---5*[{Xwayland}]
        |                            |-qterminal-+-bash---pstree
        |                            |           |-bash
        |                            |           `-6*[{qterminal}]
        |                            `-32*[{gnome-shell}]
        |-mount.ntfs-3g
        |-nm-openvpn-serv-+-openvpn
        |                 `-2*[{nm-openvpn-serv}]
        |-polkitd---2*[{polkitd}]
        |-2*[python3---2*[{python3}]]
        |-rtkit-daemon---2*[{rtkit-daemon}]
        |-systemd-+-(sd-pam)
        |         |-at-spi-bus-laun-+-dbus-daemon
        |         |                 `-3*[{at-spi-bus-laun}]
        |         |-at-spi2-registr---2*[{at-spi2-registr}]
        |         |-dbus-daemon
        |         |-dconf-service---2*[{dconf-service}]
        |         |-gjs---10*[{gjs}]
        |         |-gvfs-udisks2-vo---3*[{gvfs-udisks2-vo}]
        |         |-gvfsd-+-gvfsd-dnssd---2*[{gvfsd-dnssd}]
        |         |       |-gvfsd-network---3*[{gvfsd-network}]
        |         |       |-gvfsd-trash---2*[{gvfsd-trash}]                                                                                                                                  
        |         |       `-2*[{gvfsd}]                                                                                                                                                      
        |         |-gvfsd-fuse---5*[{gvfsd-fuse}]                                                                                                                                            
        |         |-gvfsd-metadata---2*[{gvfsd-metadata}]                                                                                                                                    
        |         |-pipewire---{pipewire}                                                                                                                                                    
        |         |-pipewire-pulse---{pipewire-pulse}                                                                                                                                        
        |         |-wireplumber---4*[{wireplumber}]                                                                                                                                          
        |         |-xdg-desktop-por---3*[{xdg-desktop-por}]                                                                                                                                  
        |         |-xdg-document-po-+-fusermount3                                                                                                                                            
        |         |                 `-5*[{xdg-document-po}]                                                                                                                                  
        |         `-xdg-permission----2*[{xdg-permission-}]                                                                                                                                  
        |-systemd-journal                                                                                                                                                                    
        |-systemd-logind                                                                                                                                                                     
        |-systemd-resolve
        |-systemd-swap
        |-systemd-timesyn---{systemd-timesyn}
        |-systemd-udevd
        |-udisksd---4*[{udisksd}]
        |-upowerd---2*[{upowerd}]
        `-wpa_supplicant

184M / 2026M VRAM   9.09%
32M / 6135M GTT   0.52%
robus ★★★★★
()
Ответ на: комментарий от cumvillain

sway:

systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─Xwayland───8*[{Xwayland}]
        ├─dbus-daemon
        ├─gpg-agent
        ├─gpu_oberver.sh───sleep
        ├─login───bash───sway───sway───10*[{sway}]
        ├─lxqt-policykit-───9*[{lxqt-policykit-}]
        ├─mount.ntfs-3g
        ├─nm-openvpn-serv─┬─openvpn
        │                 └─2*[{nm-openvpn-serv}]
        ├─polkitd───2*[{polkitd}]
        ├─qterminal─┬─bash───pstree
        │           └─7*[{qterminal}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─swaybg
        ├─systemd─┬─(sd-pam)
        │         ├─at-spi-bus-laun─┬─dbus-daemon
        │         │                 └─3*[{at-spi-bus-laun}]                                                                                                                                  
        │         ├─at-spi2-registr───2*[{at-spi2-registr}]                                                                                                                                  
        │         ├─dbus-daemon                                                                                                                                                              
        │         ├─dconf-service───2*[{dconf-service}]                                                                                                                                      
        │         ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]                                                                                                                                  
        │         ├─gvfsd─┬─gvfsd-dnssd───2*[{gvfsd-dnssd}]                                                                                                                                  
        │         │       ├─gvfsd-network───3*[{gvfsd-network}]                                                                                                                              
        │         │       ├─gvfsd-trash───2*[{gvfsd-trash}]                                                                                                                                  
        │         │       └─2*[{gvfsd}]                                                                                                                                                      
        │         ├─gvfsd-fuse───5*[{gvfsd-fuse}]                                                                                                                                            
        │         ├─gvfsd-metadata───2*[{gvfsd-metadata}]                                                                                                                                    
        │         ├─pipewire───{pipewire}                                                                                                                                                    
        │         ├─pipewire-pulse───{pipewire-pulse}                                                                                                                                        
        │         ├─wireplumber───4*[{wireplumber}]                                                                                                                                          
        │         ├─xdg-desktop-por───4*[{xdg-desktop-por}]                                                                                                                                  
        │         ├─xdg-desktop-por───5*[{xdg-desktop-por}]                                                                                                                                  
        │         ├─xdg-document-po─┬─fusermount3                                                                                                                                            
        │         │                 └─6*[{xdg-document-po}]                                                                                                                                  
        │         └─xdg-permission-───2*[{xdg-permission-}]                                                                                                                                  
        ├─systemd-journal                                                                                                                                                                    
        ├─systemd-logind                                                                                                                                                                     
        ├─systemd-resolve                                                                                                                                                                    
        ├─systemd-swap                                                                                                                                                                       
        ├─systemd-timesyn───{systemd-timesyn}                                                                                                                                                
        ├─systemd-udevd                                                                                                                                                                      
        ├─udisksd───4*[{udisksd}]                                                                                                                                                            
        ├─upowerd───2*[{upowerd}]                                                                                                                                                            
        └─waybar─┬─sh───python3───2*[{python3}]                                                                                                                                              
                 └─25*[{waybar}]                                                                                                                                                             
                                                                                                                                                                                             
77M / 2026M VRAM   3.80%                                                                                                                                                                     
35M / 6135M GTT   0.57%
robus ★★★★★
()
Ответ на: комментарий от cumvillain

В итоге сама оболочка жрёт больше 100 Mb видеорамы – как firefox с фоновым утубом. Чоттодохера. При этом без всяких свистелок и весёлостей.

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

100 метров дефицитного ресурса = разницы никакой. Окааай. А то там нород фокс с LIBGL_ALWAYS_SOFTWARE пускает. Кст, мсье случайно не GeneralTorpedo?

robus ★★★★★
()
27 декабря 2022 г.
Ответ на: комментарий от eternal_sorrow

@DrBrown, может объяснишь, зачем ты заспамил мне уведомления своими дизлайками?

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