kde+nvidia=tearing

Я так понял очень популярная тема, только вот ответа на неё нет...
Карточка
01:00.0 VGA compatible controller: NVIDIA Corporation GK106 [GeForce GTX 660] (rev a1)
Драйвера:
[[email protected] ~]$ pacman -Qs nvidia
local/lib32-nvidia-libgl 325.15-1
local/lib32-nvidia-utils 325.15-1
local/libvdpau 0.7-1
local/nvidia 325.15-3
local/nvidia-libgl 325.15-1
local/nvidia-utils 325.15-1
xorg.conf нет, сделал
[[email protected] ~]$ cat /etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
        Identifier "Default nvidia Device"
        Driver     "nvidia"
        Option     "NoLogo" "True"
        Option     "TwinView" "off"
        Option     "TripleBuffer" "1"
EndSection

Окна рвутся, видео в видеплеерах с полосами... На счёт видео частично решилось тем что в параметры системы-эффекты рабочего стола-дополнительно поставил галочку "Отключть эффекты для полноэкранных окон"
В nvidia-settings стоят галочки в opengl settings: "Sync to VBlank" и "Allow Flipping" (Хотя пробовал их включать/выключать в разных комбинациях с настройками KDE-предотвращение разрывов в настройках эффектов)
А теперь МЕГА-КОСТЫЛЬ: После включения компа, заходим в настройки эффектов рабочего стола-дополнительно-предотвращение разрывов vsync (стоит полная перерисовка) ставлю на Нет, применить, опять ставлю на полная перерисовка, применить, и вуаля! Никаих полос!
Можно ли эту процедуру записать в скрипт? kostil.sh :)
Пробовал
export __GL_SYNC_TO_VBLANK=1
export __GL_SYNC_DISPLAY_DEVICE=CRT-0
export __VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=CRT-0
Не помогло
А у вас видео выводится через gl, что вы крутите синхронизацию для OpenGL? Если выводится через xv, там совсем другой параметр, насколько я помню, и настраивается в nvidia-settings в разделе настроек видео-оверлея.

Кроме того, аналогичные разрывы бывают при проблемах с оконным или композитным менеджером, если он будет по каким-то причинам программно перерисовывать видео. Этот случай можно легко отследить, если во время воспроизведения видео посмотреть top
Если у вас в это время оконный менеджер и/или X-сервер будут кушать процессор сравнимо с плеером, значит перерисовка таки идёт.
Если у вас включён композитный режим – попробуйте его выключить или изменить его настройки.
DarkDigger, у меня никакие шаманства с конфигами иксов, как и перебирание композитных манагеров и их параметров, не возымели действия...
Да нет же, я нашёл тупое, но решение:
А теперь МЕГА-КОСТЫЛЬ: После включения компа, заходим в настройки эффектов рабочего стола-дополнительно-предотвращение разрывов vsync (стоит полная перерисовка) ставлю на Нет, применить, опять ставлю на полная перерисовка, применить, и вуаля! Никаих полос!

Как бы оформить это действие в скриптик...
Подключил другой монитор (элт), ставил разные частоты 60-85 герц, разрешения, толку ноль...
Как же включить тебя v-sync???
Я правильно понимаю, что проблема с полосами только у избранных?
Может дело в этом (строчка из /var/log/Xorg.0.log)
(II) NVIDIA(GPU-0): Display (ViewSonic VA2216w-4 (CRT-0)) does not support NVIDIA

Нет, не в этом дело...
Поменял видюху на 8800, поменял монитор, всё едино...
Я кажется начал понимать суть проблемы (я первый?)
Грохнул kwin, и запустил заново:
[[email protected] ~]$ ps | grep kwin
  513 ?        00:00:05 kwin
[[email protected] ~]$ kill -3 513
[[email protected] ~]$ kwin
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
OpenGL vendor string:                   NVIDIA Corporation
OpenGL renderer string:                 GeForce GTX 660/PCIe/SSE2
OpenGL version string:                  4.3.0 NVIDIA 325.15
OpenGL shading language version string: 4.30 NVIDIA via Cg compiler
Driver:                                 NVIDIA
Driver version:                         325.15
GPU class:                              Unknown
OpenGL version:                         4.3
GLSL version:                           4.30
X server version:                       1.14.2
Linux kernel version:                   3.10.7
Direct rendering:                       yes
Requires strict binding:                no
GLSL shaders:                           yes
Texture NPOT support:                   yes
Virtual Machine:                        no
kwin(837) KWin::GlxBackend::present:
It seems you are using the nvidia driver without triple buffering
You must export __GL_YIELD="USLEEP" to prevent large CPU overhead on synced swaps
Preferably, enable the TripleBuffer Option in the xorg.conf Device
For this reason, the tearing prevention has been disabled.
See https://bugs.kde.org/show_bug.cgi?id=322060
Он просит включить TripleBuffer, но он и так включён:
[[email protected] ~]$ cat /etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
        Identifier "Default nvidia Device"
        Driver     "nvidia"
        Option     "NoLogo" "True"
        Option     "TwinView" "off"
        Option     "TripleBuffer" "1"
        Option     "GLXVBlank"    "True"
EndSection
Если заново запустить kwin, проблемы останутся, но он советует export __GL_YIELD="USLEEP"
Так вот если сначала сделать export __GL_YIELD="USLEEP", а затем запустить kwin, то всё ок!!!! Осталось только понять как добавлять переменные окружения автоматически :)
Разобрался:
В файл
/etc/profile
дописать 2 строчки
export __GL_YIELD="USLEEP"
export KWIN_TRIPLE_BUFFER=1
ВСЁ!!!! РАЗОБРАЛСЯ С ЭТИМ ГЛЮКОМ!)))
Браво! Долго искал решение этой проблемы.
DarkDigger,
спасибо за наводку! В вики говорят, что не надо прописывать обе переменные одновременно:
https://wiki.archlinux.org/index.php/NVIDIA#Avoid_screen_tearing_in_KDE_.28KWin.29

Обсуждение бага:
https://bugs.kde.org/show_bug.cgi?id=322060
 
Зарегистрироваться или войдите чтобы оставить сообщение.