Nvidia GPU 드라이버의 전체 합성 파이프라인을 자동으로 강제하는 방법은 무엇입니까?

Nvidia GPU 드라이버의 전체 합성 파이프라인을 자동으로 강제하는 방법은 무엇입니까?

Manjaro Linux를 설치했습니다. 내 그래픽 카드는 Nvidia GTX 1050Ti입니다.

컴퓨터를 부팅하고 비디오를 보려고 했을 때 화면이 심하게 찢어지는 것을 발견했습니다. 이 문제는 Nvidia X 서버 설정으로 가서 "완전 결합 파이프라인 강제 적용" 옵션을 활성화했을 때 해결되었습니다.

컴퓨터를 다시 시작할 때마다 수동으로 활성화할 필요가 없도록 이 옵션을 영구적으로 설정하는 방법이 있습니까?

답변1

내 노트북에는 Ubuntu Bionic 및 KDE Plasma 5.17을 실행하는 Quadro K2100M이 장착되어 있습니다.네온 환매) 및 를 사용합니다 nvidia-driver-430.

집과 직장의 모니터에 대해 서로 다른 구성 세트가 있기 때문에 뭔가 역동적인 것이 필요했습니다. 다음은 나에게 도움이 된 것입니다.

  1. 화면( ~/bin/force-composition-pipeline.sh)의 동적 구성을 처리하기 위해 다음 스크립트를 작성했습니다.

    #!/bin/bash
    s="$(nvidia-settings -q CurrentMetaMode -t)"
    
    if [[ "${s}" != "" ]]; then
      s="${s#*" :: "}"
      nvidia-settings -a CurrentMetaMode="${s//\}/, ForceCompositionPipeline=On\}}"
    fi
    
  2. 자동 시작에 다음 스크립트를 추가했습니다.
    chmod +x ~/bin/force-composition-pipeline.sh
    ln -s ~/bin/force-composition-pipeline.sh ~/.config/autostart-scripts/
    
  3. KDE 플라즈마 설정에서,디스플레이 및 모니터링->신디사이저, 내가 설정함찢어짐 방지("수직 동기화")도착하다안 돼요.

나는 불완전한 ForceCompositionPipeline것만으로도 충분하다고 생각했습니다.

답변2

Paradox의 답변에 추가하려면(댓글을 달 수 없기 때문에...) ~/.bashrc가 아닌 ~/.bash_profile에 명령을 넣습니다.

~/.bashrc는 새 bash 세션이 열릴 때마다(즉, 새 터미널 에뮬레이터 창/탭이 열릴 때마다) 획득됩니다.

반면, bash를 로그인 셸로 시작하면(예: 그래픽 데스크탑 환경에 로그인할 때) ~/.bash_profile은 한 번만 가져옵니다. 비교하다https://www.gnu.org/software/bash/manual/bash.html#Bash-Startup-Files

편집: 이제 nvidia 독점 드라이버를 사용할 때 KWin의 찢어짐 문제에 대한 더 나은 솔루션이 있습니다. kwin의 새로운 버전(버전 >= 5.12)이 필요합니다. [1]그리고nvidia-drm 커널 모듈 [2]에 대한 모드 설정을 활성화합니다. 나는 이것을 테스트했고 kwin-5.17.80(openSuse 저장소의 git snapshot) 및 nvidia 440.26에서 작동합니다.

편집: 음, nvidia-drm 모듈을 사용하여 모드 세트를 활성화하면 일시 중단 복구가 실패하는 것처럼 보이는 부작용이 있습니다...

편집(다시): 적어도 현재로서는 nvidia-drm 모듈을 사용하여 설정된 모드를 활성화하지 않고도 테어링이 사라진 것 같습니다...

[1]https://wiki.archlinux.org/index.php/NVIDIA/Troubleshooting#Avoid_screen_tearing_in_KDE_(KWin) https://phabricator.kde.org/D19867

[2]https://wiki.archlinux.org/index.php/NVIDIA#DRM_kernel_mode_setting

답변3

"를 설정할 수 있습니다.결합된 파이프라인 강제 완료" 옵션은 아래와 같이 터미널에 표시됩니다.

$ nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

이를 자동화하는 가장 쉬운 방법은 이것을 에 넣는 것입니다 .bashrc. 계속하려면 터미널에 다음을 입력하십시오.

$ echo "$ nvidia-settings --assign CurrentMetaMode=\"nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }\"" >> ~/.bashrc

이 기능을 적용하려면 로그아웃했다가 다시 로그인(또는 다시 시작)할 수 있습니다. "자동 선택"으로 인해 이는 모니터 솔루션만을 의미합니다.

대안은 내부적으로 동일한 작업을 수행하는 것이지만 ~/.nvidia-settings-rc시간이 지남에 따라 동작이 변경될 수 있는 반면, 에서는 .bashrc수행 방법을 결정할 수 있습니다.

부록

화면 찢어짐과 관련하여 시도해 볼 수 있는 다른 조정이 있습니다.

Manjaro를 사용하고 있으므로 KDE를 사용하고 있다고 가정합니다. 화면을 업데이트하기 전에 삼중 버퍼링을 사용하거나 현재 이미지가 표시될 때까지 기다리도록 창 관리자(KWin)에 지시할 수 있습니다.

1) GPU가 현재 이미지를 완전히 표시할 때까지 기다립니다.

# echo "export __GL_YIELD=\"USLEEP\"" >> /etc/profile.d/kwin.sh

2) KWin에서 삼중 버퍼링 활성화

# echo "export KWIN_TRIPLE_BUFFER=1" >> /etc/profile.d/kwin.sh

위의 두 가지를 동시에 활성화하지 마십시오. nvidia-settingsKWin에서 삼중 버퍼링을 활성화하는 경우 삼중 버퍼링을 활성화해야 합니다.

답변4

단일 모니터의 경우:

텍스트 파일을 만들고 다음 내용을 붙여넣습니다.

[Desktop Entry]
Type=Application
Name=nvidia-force-full-compositon
Exec=nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

듀얼 모니터의 경우:

듀얼 모니터가 있는 경우 텍스트 편집기에서 이 파일을 열 수 있습니다. /etc/X11/xorg.conf 그런 다음 ctrl+F를 사용하여 이 단어를 검색 metamodes하고 구성 내용을 확인하세요. 내 것은 이렇습니다.

"metamodes" "DVI-I-0: nvidia-auto-select +1920+0 {ForceCompositionPipeline=On}, HDMI-0: nvidia-auto-select +0+0

그래서 다음과 같은 destop 항목을 만들었습니다.

[Desktop Entry]
Type=Application
Name=nvidia-force-full-compositon
Exec=nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +1920+0 {ForceCompositionPipeline=On}, nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"

참고: ForceFullCompositionPipeline 또는 ForceCompositionPipeline만 실행할 수 있습니다. 필요에 따라 텍스트를 변경하면 됩니다.

다음과 같이 텍스트 파일을 저장합니다.

nvidia-force-full-compositon.desktop

.desktop필수적인 곳 입니다.

이제 복사해서 붙여넣으세요.~/.config/autostart

재시작.

관련 정보