Вопрос или проблема
Когда я использую приложение GTK, у меня наблюдаются некоторые сильные мигания экрана. Это не происходит, когда:
- то же приложение, но собранное с помощью QT (например, Transmission QT работает нормально, в то время как Transmission GTK неисправно).
- когда не используется i3, а стандартный менеджер окон Ubuntu.
Любая помощь будет приветствоваться.
С i3 выполнение GTK_DEBUG=geometry transmission-gt
выдает
libEGL warning: не удалось получить имя драйвера для fd -1
libEGL warning: MESA-LOADER: не удалось получить информацию о устройстве
libEGL warning: не удалось получить имя драйвера для fd -1
Кажется, когда мигание происходит, GDB_DEBUG выводит
[0x55cee28f2970] GtkScrollbar ширина для высоты: -1 минимальная 6 и естественная: 6 (кэш использован: да)
[0x55cee28ef880] GtkScrollbar высота для ширины: -1 минимальная 6 и естественная: 6 (кэш использован: да)
Информация для отладки:
lsb-release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание: Ubuntu 24.04.1 LTS
Версия: 24.04
Кодовое имя: noble
sudo lshw -c video
*-display
описание: VGA совместимый контроллер
продукт: Raptor Lake-P [Iris Xe Graphics]
производитель: Intel Corporation
физический ID: 2
информация о шине: pci@0000:00:02.0
логическое имя: /dev/fb0
версия: 04
ширина: 64 бита
частота: 33MHz
возможности: pciexpress msi pm vga_controller bus_master cap_list rom fb
конфигурация: depth=32 driver=i915 latency=0 mode=1920x1200 resolution=1920,1200 visual=truecolor xres=1920 yres=1200
ресурсы: iomemory:600-5ff iomemory:400-3ff irq:198 память:603c000000-603cffffff память:4000000000-400fffffff ioport:2000(size=64) память:c0000-dffff память:4010000000-4016ffffff память:4020000000-40ffffffff
lspci -v
00:00.0 Host bridge: Intel Corporation Raptor Lake-P 6p+8e cores Host Bridge/DRAM Controller
Подсистема: Lenovo Устройство 2315
Флаги: мастер шины, быстрое определение устройства, задержка 0
Возможности: <доступ запрещен>
00:02.0 VGA совместимый контроллер: Intel Corporation Raptor Lake-P [Iris Xe Graphics] (rev 04) (prog-if 00 [VGA контроллер])
Подсистема: Lenovo Raptor Lake-P [Iris Xe Graphics]
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 198
Память на 603c000000 (64-бит, без предварительной выборки) [размер=16M]
Память на 4000000000 (64-бит, с предварительной выборкой) [размер=256M]
I/O порты на 2000 [размер=64]
Расширяемая ROM на 000c0000 [виртуальная] [отключена] [размер=128K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: i915
Ядровые модули: i915
00:04.0 Контроллер обработки сигналов: Intel Corporation Raptor Lake Dynamic Platform and Thermal Framework Processor Participant
Подсистема: Lenovo Raptor Lake Dynamic Platform and Thermal Framework Processor Participant
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 181
Память на 603d180000 (64-бит, без предварительной выборки) [размер=128K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: proc_thermal_pci
Ядровые модули: processor_thermal_device_pci
00:06.0 PCI мост: Intel Corporation Raptor Lake PCIe 4.0 Graphics Port (prog-if 00 [Обычное декодирование])
Подсистема: Lenovo Raptor Lake PCIe 4.0 Graphics Port
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 122
Шина: primary=00, secondary=04, subordinate=04, sec-latency=0
I/O за мостом: [отключено] [16-бит]
Память за мостом: bc200000-bc2fffff [размер=1M] [32-бит]
Память с предварительной выборкой за мостом: [отключено] [64-бит]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: pcieport
00:07.0 PCI мост: Intel Corporation Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0 (prog-if 00 [Обычное декодирование])
Подсистема: Lenovo Raptor Lake-P Thunderbolt 4 PCI Express Root Port
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 123
Шина: primary=00, secondary=20, subordinate=49, sec-latency=0
I/O за мостом: 3000-3fff [размер=4K] [16-бит]
Память за мостом: b0000000-bc1fffff [размер=194M] [32-бит]
Память с предварительной выборкой за мостом: 6000000000-601bffffff [размер=448M] [32-бит]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: pcieport
00:07.2 PCI мост: Intel Corporation Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2 (prog-if 00 [Обычное декодирование])
Подсистема: Lenovo Raptor Lake-P Thunderbolt 4 PCI Express Root Port
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 124
Шина: primary=00, secondary=50, subordinate=79, sec-latency=0
I/O за мостом: 4000-4fff [размер=4K] [16-бит]
Память за мостом: a2000000-ae1fffff [размер=194M] [32-бит]
Память с предварительной выборкой за мостом: 6020000000-603bffffff [размер=448M] [32-бит]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: pcieport
00:08.0 Системный периферийный устройство: Intel Corporation GNA Scoring Accelerator module
Подсистема: Lenovo GNA Scoring Accelerator module
Флаги: быстрое определение устройства, IRQ 255
Память на 603d1e2000 (64-бит, без предварительной выборки) [отключена] [размер=4K]
Возможности: <доступ запрещен>
00:0a.0 Контроллер обработки сигналов: Intel Corporation Raptor Lake Crashlog and Telemetry (rev 01)
Подсистема: Lenovo Raptor Lake Crashlog and Telemetry
Флаги: быстрое определение устройства
Память на 603d1c0000 (64-бит, без предварительной выборки) [размер=32K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: intel_vsec
Ядровые модули: intel_vsec
00:0d.0 USB контроллер: Intel Corporation Raptor Lake-P Thunderbolt 4 USB Controller (prog-if 30 [XHCI])
Подсистема: Lenovo Raptor Lake-P Thunderbolt 4 USB Controller
Флаги: мастер шины, среднее определение устройства, задержка 0, IRQ 141
Память на 603d1b0000 (64-бит, без предварительной выборки) [размер=64K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: xhci_hcd
Ядровые модули: xhci_pci
00:0d.2 USB контроллер: Intel Corporation Raptor Lake-P Thunderbolt 4 NHI #0 (prog-if 40 [USB4 Host Interface])
Подсистема: Lenovo Raptor Lake-P Thunderbolt 4 NHI
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 16
Память на 603d140000 (64-бит, без предварительной выборки) [размер=256K]
Память на 603d1e1000 (64-бит, без предварительной выборки) [размер=4K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: thunderbolt
Ядровые модули: thunderbolt
00:0d.3 USB контроллер: Intel Corporation Raptor Lake-P Thunderbolt 4 NHI #1 (prog-if 40 [USB4 Host Interface])
Подсистема: Lenovo Raptor Lake-P Thunderbolt 4 NHI
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 16
Память на 603d100000 (64-бит, без предварительной выборки) [размер=256K]
Память на 603d1e0000 (64-бит, без предварительной выборки) [размер=4K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: thunderbolt
Ядровые модули: thunderbolt
00:14.0 USB контроллер: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller (rev 01) (prog-if 30 [XHCI])
Подсистема: Lenovo Alder Lake PCH USB 3.2 xHCI Host Controller
Флаги: мастер шины, среднее определение устройства, задержка 0, IRQ 142
Память на 603d1a0000 (64-бит, без предварительной выборки) [размер=64K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: xhci_hcd
Ядровые модули: xhci_pci
00:14.2 RAM память: Intel Corporation Alder Lake PCH Shared SRAM (rev 01)
Подсистема: Lenovo Alder Lake PCH Shared SRAM
Флаги: быстрое определение устройства
Память на 603d1d8000 (64-бит, без предварительной выборки) [отключена] [размер=16K]
Память на 603d1df000 (64-бит, без предварительной выборки) [отключена] [размер=4K]
Возможности: <доступ запрещен>
00:14.3 Контроллер сети: Intel Corporation Raptor Lake PCH CNVi WiFi (rev 01)
Подсистема: Intel Corporation Raptor Lake PCH CNVi WiFi
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 16
Память на 603d1d4000 (64-бит, без предварительной выборки) [размер=16K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: iwlwifi
Ядровые модули: iwlwifi
00:15.0 Контроллер последовательной шины: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0 (rev 01)
Подсистема: Lenovo Alder Lake PCH Serial IO I2C Controller
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 27
Память на 4017000000 (64-бит, без предварительной выборки) [размер=4K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: intel-lpss
Ядровые модули: intel_lpss_pci
00:16.0 Контроллер связи: Intel Corporation Alder Lake PCH HECI Controller (rev 01)
Подсистема: Lenovo Alder Lake PCH HECI Controller
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 180
Память на 603d1dd000 (64-бит, без предварительной выборки) [размер=4K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: mei_me
Ядровые модули: mei_me
00:16.3 Последовательный контроллер: Intel Corporation Alder Lake AMT SOL Redirection (rev 01) (prog-if 02 [16550])
Подсистема: Lenovo Alder Lake AMT SOL Redirection
Флаги: 66MHz, быстрое определение устройства, IRQ 19
I/O порты на 2060 [размер=8]
Память на bc301000 (32-бит, без предварительной выборки) [размер=4K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: serial
00:1f.0 ISA мост: Intel Corporation Raptor Lake LPC/eSPI Controller (rev 01)
Подсистема: Lenovo Raptor Lake LPC/eSPI Controller
Флаги: мастер шины, быстрое определение устройства, задержка 0
00:1f.3 Аудиоустройство: Intel Corporation Raptor Lake-P/U/H cAVS (rev 01) (prog-if 80)
Подсистема: Lenovo Raptor Lake-P/U/H cAVS
Флаги: мастер шины, быстрое определение устройства, задержка 64, IRQ 199
Память на 603d1d0000 (64-бит, без предварительной выборки) [размер=16K]
Память на 603d000000 (64-бит, без предварительной выборки) [размер=1M]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: sof-audio-pci-intel-tgl
Ядровые модули: snd_hda_intel, snd_sof_pci_intel_tgl
00:1f.4 SMBus: Intel Corporation Alder Lake PCH-P SMBus Host Controller (rev 01)
Подсистема: Lenovo Alder Lake PCH-P SMBus Host Controller
Флаги: среднее определение устройства, IRQ 16
Память на 603d1dc000 (64-бит, без предварительной выборки) [размер=256]
I/O порты на efa0 [размер=32]
Драйвер ядра в использовании: i801_smbus
Ядровые модули: i2c_i801
00:1f.5 Контроллер последовательной шины: Intel Corporation Alder Lake-P PCH SPI Controller (rev 01)
Подсистема: Lenovo Alder Lake-P PCH SPI Controller
Флаги: быстрое определение устройства
Память на a0800000 (32-бит, без предварительной выборки) [размер=4K]
Драйвер ядра в использовании: intel-spi
Ядровые модули: spi_intel_pci
04:00.0 Контроллер энергонезависимой памяти: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO (prog-if 02 [NVM Express])
Подсистема: Samsung Electronics Co Ltd SSD 980 PRO
Флаги: мастер шины, быстрое определение устройства, задержка 0, IRQ 16
Память на bc200000 (64-бит, без предварительной выборки) [размер=16K]
Возможности: <доступ запрещен>
Драйвер ядра в использовании: nvme
Ядровые модули: nvme
Любая помощь будет приветствоваться
Ответ или решение
Проблема мерцания, возникающая при использовании GTK-приложений в оконном менеджере i3 на Ubuntu, может быть вызвана несколькими факторами, включая настройки графического драйвера, конфигурации окна и свойства самого GTK. В данном ответе мы рассмотрим основные причины проблемы и предложим решения, которые помогут вам избавиться от мерцания и улучшить работу ваших приложений.
1. Анализ проблемы
Первоначально, ваше наблюдение о том, что мерцание появляется только в GTK-приложениях и не наблюдается в приложениях на QT, а также при использовании стандартного оконного менеджера, указывает на возможные проблемы с совместимостью библиотек GTK и управления окнами в i3.
Вывод ошибок libEGL:
Системные сообщения, которые вы привели, подсказывают, что библиотеки графического вывода (libEGL) не могут получить информацию о драйвере. Это может быть связано с проблемами установки или конфигурации драйвера графики, что, в свою очередь, может влиять на рендеринг окон в GTK.
2. Настройки драйвера и конфигурация графической системы
Вы используете графический контроллер Intel Iris Xe и драйвер i915. Важно убедиться, что у вас установлены последние версии драйверов.
-
Обновление системы и драйвера графики:
Убедитесь, что ваша система обновлена, и у вас установлены последние версии встроенных драйверов.sudo apt update sudo apt upgrade
-
Проверка конфигурации X11:
В некоторых случаях конфигурация X11 может требовать модификаций. Откройте или создайте файл/etc/X11/xorg.conf.d/20-intel.conf
и добавьте следующее:Section "Device" Identifier "Intel Graphics" Driver "intel" Option "TearFree" "true" EndSection
Обратите внимание, что опция
TearFree
может помочь уменьшить мерцание.
3. Конфигурация GTK
Убедитесь, что настройки GTK корректны и соответствуют вашим требованиям.
-
Проверка переменной окружения:
Попробуйте запустить приложение с переменной окружения, которая отключает использование compositing (композитинга):GTK_CSD=0 transmission-gtk
4. Проверка настройки i3
Некоторые настройки i3 могут повлиять на рендеринг окон. Проверьте ваш конфигурационный файл i3 (обычно ~/.config/i3/config
) на наличие настроек, касающихся управления окнами и поведения композиторной среды.
-
Запуск композитора:
Убедитесь, что композитор, такой какpicom
, запущен. Это поможет улучшить качество рендеринга окон:picom --config ~/.config/picom/picom.conf &
5. Заключение
Проблемы с мерцанием в GTK-приложениях под управлением i3 могут быть устранены благодаря обновлению драйверов, оптимизации конфигурации графической системы и настроек GTK. Небольшие изменения в конфигурации системы могут значительно улучшить вашу работу с графическими интерфейсами. Если указанные шаги не помогают, возможно, стоит обратиться к сообществу или форумам поддержки для более глубокого анализа вашей конкретной конфигурации системы.