(Есть решение) Артефакты xfce4-terminal

Модератор: Модераторы разделов

Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
20.09.2024 12:27
Для того что бы попробовать терминал, ничего устанавливать не надо, это же LiveDVD(USB).
Так мне же надо несколько терминалов проверять :)
И ещё надо zsh ставить и настраивать "цветной" промпт, чтобы оно проявилось (prompt adam1 в .zshrc)
Артефакты же не по всему терминалу :) А только в рамках "цветного" промпта
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Лия писала:
20.09.2024 12:29
Так мне же надо несколько терминалов проверять
Так достаточно проверить просто xfce-terminal, зачем все проверять.
Лия писала:
20.09.2024 12:29
И ещё надо zsh ставить и настраивать "цветной" промпт, чтобы оно проявилось
Там по умолчанию цветная консоль для bash, разве этого не достаточно?
А так можно и в LiveDVD поставить с помощью emerge.

Shell

$ sudo emerge -av zsh
В Calculate Linux по умолчанию настроено на установку бинарных пакетов, сборка с исходников если флаги отличаются, либо данный пакет отсутствует в бинарном репозитории.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
20.09.2024 12:38
Так достаточно проверить просто xfce-terminal, зачем все проверять.
Ради научного интереса :)
Добавлено (13:22):
Лия писала:
20.09.2024 12:17
В общем, попробовала на Arch Linux + Xfce - в gnome-terminal артефакты есть, в xfce4-terminal и tilda - нет.
Если "покрутить" размер шрифта - артефакты появляются и в xfce4-terminal, и в tilda.
Добавлено (13:23):

Код: Выделить всё

#!/usr/bin/sh
while true; do reset; echo -e "\e[44mliya@archlinux ~ %\e(B\e[m "; sleep 0.2; done
и

Код: Выделить всё

#!/usr/bin/sh
while true; do reset; echo -e "\e[44mliya@testte ~ %\e(B\e[m "; sleep 0.2; done
Изображение
Изображение
Изображение
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Как на старых компах, времён spectrum :yes3:. Как вариант можно поиграться с настройками видеокарты в /etc/X11/xorg.conf.d, создать файлы и посмотреть что получится, заодно читать лог /var/log/Xorg.0.log, были ли включены добавленные опции.
Тут можно почитать это и это. В частности может поможет если добавить эти опции:

Код: Выделить всё

Option "TearFree" "true"
Option "SWCursor" "True"
Возможно настройками иксов это всё же настраивается.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

Попробую :)
Кстати, я же совсем забыла про встройку процессора - как раз тоже amdgpu. Так вот, если её включить в BIOS и переткнуть один из мониторов туда - артефакты "волшебным образом" полностью исчезают :)
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
20.09.2024 14:24
Option "TearFree" "true"
Option "SWCursor" "True"
Не помогает (Xorg.0.log проверила)
Добавлено (15:45):
Aliech писал:
15.09.2024 00:28
совсем другая история про проверку видеокарты
Unigine Superposition - успешно
Furmark тест на артефакты 10 минут - успешно
https://github.com/GpuZelenograd/memtest_vulkan 5 минут - успешно
./agt -mctraininfo - успешно
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

У меня идеи умерли.
Добавлено (16:34):
Хм, пересмотрел ваш лог, наткнулся на такую строчку:

Shell

[ 32.485] (==) AMDGPU(0): AsyncFlipSecondaries: disabled
Можете почитать по ней в man modesetting. Можно попробовать включить эту опцию. На сколько я понял там написано, что если включено несколько мониторов, то вертикальная синхронизация работает только для одного. Вот только не совсем понятно этой опцией включается синхронизация всех мониторов или наоборот. Можно попробовать включить, прописать "on" или "true", записывается в Section "Device", но это видно по ману. Но если я правильно понял, то на одном мониторе у вас должно отображаться без артефактов, а на остальных с ними.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

Лия писала:
20.09.2024 15:43
Furmark
Изображение
ormorph писал(а):
20.09.2024 16:05
AsyncFlipSecondaries
ormorph писал(а):
20.09.2024 16:05
Но если я правильно понял, то на одном мониторе у вас должно отображаться без артефактов, а на остальных с ними.
Не помогает, на всех мониторах отображается с артефактами

Но, кажется, я близко к разгадке :)
Если запускать терминал с GDK_SYNCHRONIZE=1 - артефакты исчезают :)
https://docs.gtk.org/gtk3/x11.html
The X11 GDK backend can be influenced with some additional environment variables.

GDK_SYNCHRONIZE
If set, GDK makes all X requests synchronously. This is a useful option for debugging, but it will slow down the performance considerably.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Лия писала:
20.09.2024 17:16
Если запускать терминал с GDK_SYNCHRONIZE=1 - артефакты исчезают
Ну тогда ни что не мешает просто сделать эту переменную глобальной. По идее должно хватить добавить файл /etc/profile.d/xx.sh, с глобальной переменной:

Shell

export GDK_SYNCHRONIZE=1
Прописывается просто строчка без всяких #!/bin/sh, так же можно добавить второй такой же файл с расширением csh, где так же объявить переменную с помощью setenv. Как результат после перезагрузки эта переменная станет глобальной.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

Так там же написано
Лия писала:
20.09.2024 17:16
but it will slow down the performance considerably.
Работать будет, но медленно :)
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Лия писала:
20.09.2024 17:34
Работать будет, но медленно
Само собою, синхронизация замедляет. Но это критично если играешь в игры и нужны большие fps. Если бы для каждого монитора использовалась своя видеокарта, то таких проблем бы не было.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

Ещё помогает

Код: Выделить всё

GDK_RENDERING=image
и

Код: Выделить всё

GDK_RENDERING=recording
GDK_RENDERING
If set, selects the way how GDK creates similar surfaces. This affects both the functionality of the function gdk_window_create_similar_surface() as well as the way GDK creates backing surfaces for double buffering. The following values can be used:

similar: Create similar surfaces to the window in use. This is the default behavior when the variable is not set.
image: Always create image surfaces. This essentially turns off all hardware acceleration inside GTK.
recording: Always create recording surfaces. This causes bare rendering to the backend without the creation of intermediate surfaces (Pixmaps in X) and will likely cause flicker.
Попробую посмотреть в сторону Pixmaps - почему же они вызывают артефакты :)
И надо попытаться понять взаимодействие иксов и amdgpu
Последний раз редактировалось Лия 21.09.2024 11:01, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Лия писала:
21.09.2024 10:34
Ещё помогает
Код: Выделить всё

GDK_RENDERING=image
и
Код: Выделить всё

GDK_RENDERING=recording
Это ещё хуже чем GDK_SYNCHRONIZE=1, так как отключает аппаратное ускорение и нагружает процессор. Т.е. как раз это очень сильно замедляет процессор по сравнению с GDK_SYNCHRONIZE=1.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
21.09.2024 10:42
Это ещё хуже чем GDK_SYNCHRONIZE=1, так как отключает аппаратное ускорение и нагружает процессор
Ну да, это там написано :)
Я просто пытаюсь найти собственно где появляется ошибка - в Gtk, в иксах или в amdgpu.
В планах: https://unix.stackexchange.com/questions/192005/capture-the-x11-protocols-traffic и смотреть разницу с разными переменными
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Лия писала:
21.09.2024 11:00
Я просто пытаюсь найти собственно где появляется ошибка - в Gtk, в иксах или в amdgpu.
Скорее всего это не ошибка. Просто при использовании нескольких мониторов на одной видеокарте, отключается вертикальная синхронизация в иксах. Как результат в некоторых приложениях могут быть артефакты. Если подключен всего лишь один монитор, у вас скорее всего артефакты не возникают. Wayland скорее всего нормально отображает, по тому, что рендеринг осуществляет композитор, а в иксах композитор поверх иксов.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
21.09.2024 11:43
Если подключен всего лишь один монитор, у вас скорее всего артефакты не возникают.
Попробовала отключить все мониторы, кроме одного - артефакты всё равно появляются.
Спасибо сказали:
Aliech
Сообщения: 1041
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Артефакты xfce4-terminal

Сообщение Aliech »

Есть мнение, что мы наблюдаем регресс в разработке графического стека. Отрицательные улучшения, если на актуальный манер.
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Как вариант для ускорения поиска решения, можно сообщить в багзилу Debian, по крайней мере могут предложить где искать. Можно конечно сообщить непосредственно разработчикам libvte, но тогда они могут предложить тестировать на живой сборке libvte, а это не просто реализовать, тем более на Debian. Жаль в Debian нет бинарника vte-2.91, который представляет собою эмулятор терминала, он входит в сборку libvte. В Gentoo например он автоматически включён в сборку x11-libs/vte, там есть опции --double-buffer --no-double-buffer, можно их попробовать.
Тут похоже что какие то функции характерные для вашей видеокарты переложены с аппаратного уровня на программный, раз программным путём удаётся решить проблему. Можно конечно добавить параметр ядра amdgpu.dpm=1, по умолчанию обычно выставлено -1(auto), но не думаю что это поможет.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
21.09.2024 16:48
нет бинарника vte-2.91, который представляет собою эмулятор терминала
Я сейчас как раз на Arch Linux тестирую с vte-2.91 :)

Я сейчас дошла до cairo
В файле src/cairo-surface.c, функции cairo_surface_create_similar если закомментировать эти строчки:

Код: Выделить всё

    if (other->backend->create_similar)
        surface = other->backend->create_similar (other, content, width, height);
Артефакты исчезают :)

Эта функция (create_similar) определена в файле src/cairo-xlib-surface.c как _cairo_xlib_surface_create_similar
Она создаёт Pixmap с помощью XCreatePixmap, затем создаёт и возвращает Surface, используя этот Pixmap

Получается, XCreatePixmap некорректно работает в асинхронном режиме (учитывая что при использовании синхронизации всё ок)? :)
Добавлено (17:47):
ormorph писал(а):
21.09.2024 16:48
--double-buffer --no-double-buffer, можно их попробовать.
ormorph писал(а):
21.09.2024 16:48
Можно конечно добавить параметр ядра amdgpu.dpm=1
Не помогает.
Спасибо сказали:
Aliech
Сообщения: 1041
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Артефакты xfce4-terminal

Сообщение Aliech »

ormorph писал(а):
21.09.2024 16:48
Тут похоже что какие то функции характерные для вашей видеокарты переложены с аппаратного уровня на программный, раз программным путём удаётся решить проблему.
Оно на всех современных карточках +/- так. Ускорение отрисовки 2D выкинули где-то в середине предыдущего десятилетия.

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

Я лично, скорее всего, забил бы.
С уважением,
Павел Алиев
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

Aliech писал:
21.09.2024 18:28
Ускорение отрисовки 2D выкинули где-то в середине предыдущего десятилетия.
Оно glamor называется, и работает до сих пор :)
[ 32.485] (II) AMDGPU(0): glamor X acceleration enabled on AMD Radeon RX 7600 (radeonsi, navi33, LLVM 18.1.8, DRM 3.57, 6.10.9-amd64)
[ 32.485] (II) AMDGPU(0): glamor detected, initialising EGL layer.
...
[ 32.531] (II) AMDGPU(0): [DRI2] Setup complete
[ 32.531] (II) AMDGPU(0): [DRI2] DRI driver: radeonsi
[ 32.531] (II) AMDGPU(0): [DRI2] VDPAU driver: radeonsi
...
[ 33.577] (II) AMDGPU(0): Use GLAMOR acceleration.
Кстати, если его отключить:

Код: Выделить всё

Option "AccelMethod" "none"
Option "AccelMethod" "string"
Setting this option to none disables use of the glamor acceleration architecture. In that case, all 2D rendering is done by the CPU, but 3D and video hardware acceleration can still work. This is mainly useful for OpenGL driver bring-up. The default is to use glamor.
артефакты тоже исчезают :)
Добавлено (18:31):
Вполне вероятно, что проблема именно в glamor или в его взаимодействии с amdgpu
Спасибо сказали:
Aliech
Сообщения: 1041
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Артефакты xfce4-terminal

Сообщение Aliech »

Лия писала:
21.09.2024 18:31
Оно glamor называется, и работает до сих пор :)
Нет. glamour это ускорение отрисовки 2D средствами примитивов OpenGL. И да, оно то работает. Но это уже не совсем то.
С уважением,
Павел Алиев
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

И glamor как раз и ускоряет/переопределяет CreatePixmap...
Добавлено (18:38):
При этом отломать ему CreatePixmap не сломав при этом всё ускорение графики крайне сложно, а может и невозможно
Добавлено (18:39):
Потому что если нету glamor вопреки "but 3D and video hardware acceleration can still work" по цепочке отключается всё аппаратное ускорение, вплоть до mesa
Спасибо сказали:
Aliech
Сообщения: 1041
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Артефакты xfce4-terminal

Сообщение Aliech »

Лия писала:
21.09.2024 18:36
И glamor как раз и ускоряет/переопределяет CreatePixmap...
Ну вот видите - выкидывали аппаратное ускорение 2D, мол оно только всё усложняет. Ща мы вам glomor запилим, оно вам всем 2D поверх 3D нарисует.

И вот вы на полный штык раскапываете ситуацию, когда GTK не может в glamor. Ура! Внезапно оказывается, что чем больше частей в системе, тем трудней её дебажить.
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Лия писала:
21.09.2024 18:31
Вполне вероятно, что проблема именно в glamor или в его взаимодействии с amdgpu
У меня вообще эта опция не используется в настройках - AccelMethod. Соответственно по умолчанию glamor отключён. Когда то пробовал включал его, но тоже были проблемы с отображением на моём драйвере, по этому просто эту строчку удалил. А у вас что прописано это было?:

Код: Выделить всё

Option   "AccelMethod"      "glamor"
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
21.09.2024 18:41
У меня вообще эта опция не используется в настройках - AccelMethod. Соответственно по умолчанию glamor отключён. Когда то пробовал включал его, но тоже были проблемы с отображением на моём драйвере, по этому просто эту строчку удалил. А у вас что прописано это было?:
По умолчанию если AccelMethod не указан то AccelMethod - glamor
The default is to use glamor.
Посмотрите в /var/log/Xorg.0.log на предмет упоминания glamor :)
Спасибо сказали:
Aliech
Сообщения: 1041
Статус: дилетант широкого профиля
ОС: debian/gentoo/openbsd

Re: Артефакты xfce4-terminal

Сообщение Aliech »

ormorph, я не знаю, что у вас за железо, но

Код: Выделить всё

[    17.494] (II) AMDGPU(0): glamor detected, initialising EGL layer.
[    17.533] (II) AMDGPU(0): Set up textured video (glamor)
По дефолтам если
С уважением,
Павел Алиев
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

Aliech писал:
21.09.2024 18:40
И вот вы на полный штык раскапываете ситуацию, когда GTK не может в glamor. Ура! Внезапно оказывается, что чем больше частей в системе, тем трудней её дебажить.
Ага...
libvte использует GTK, который использует Cairo, который использует иксы, которые используют glamor, который использует OpenGL, который реализуется средствами amdgpu
:)
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Артефакты xfce4-terminal

Сообщение ormorph »

Aliech писал:
21.09.2024 18:44
ormorph, я не знаю, что у вас за железо, но
А пардон, я переписал было на:

Код: Выделить всё

Option "AccelMethod" "sna"
Уж и не упомню почему, давно это было. Но проблемы c glamor точно были.
Спасибо сказали:
Лия
Сообщения: 54

Re: Артефакты xfce4-terminal

Сообщение Лия »

ormorph писал(а):
21.09.2024 18:49
Уж и не упомню почему, давно это было. Но проблемы c glamor точно были.
А у вас amdgpu? :)
Добавлено (18:53):
Вроде бы современные видеокарты на amdgpu умеют только glamor
Спасибо сказали: