Tela rasgando a Nvidia GTX960m

5

Eu comprei recentemente o MSI GP72 7QF ( i5-7300HQ + Nvidia GTX960m ) e estou tendo um irritante corte de tela após instalar o Ubuntu 17.04. Eu tenho o mais recente driver Nvidia instalado ( 384,59 ), mas ainda está rasgando. Eu acho que o problema é a sincronização PRIME.

Como posso corrigir isso?

    
por Minato Kuroki 29.07.2017 / 21:25

3 respostas

10

Eu tenho dois laptops híbridos rodando 17.04, um antigo ThinkPad e um P50 (2016). Estas são as máquinas Nvidia Optimus, ambas com os gráficos Quadro da “classe empresarial” e a multiplexação de hardware adequada que laptops mais baratos não têm. Isso torna os problemas do Optimus no Linux um pouco discutíveis, no entanto, eu tenho o otimus funcionando de qualquer maneira.

Passei bastante tempo trabalhando com esse problema e apresentei a resposta. Se você tiver minhas máquinas, de qualquer maneira.

Meus laptops têm uma configuração de bios para desativar os gráficos intel e usar apenas a placa nvidia, que descreve como modo Discreto. Isso requer a multiplexação de hardware que os ThinkPads da estação de trabalho móvel possuem. Neste modo, é fácil livrar-se de rasgar. Esta é a solução (1). Mas isso pode não ser uma opção.

Se o painel de controle da Nvidia permite que você escolha nvidia ou intel, você está no modo híbrido.

Se você quiser usar gráficos híbridos, ou se não tiver escolha, é fácil evitar o uso de monitores externos, já que eles são acionados pelo hardware da nvidia. O rasgo é apenas no painel do laptop ou em monitores externos? Rasgo do monitor externo é fixado pela composição do encanamento de força, na minha experiência das duas máquinas. A linha completa de piplinas não é necessária. Esta é a solução (2a), mas ela não para de rasgar no painel do laptop. Você pode ligá-lo a partir do painel de controle da nvidia ou através da linha de comando (bom para um script de inicialização). Veja a captura de tela abaixo. Existe um truque: você precisa selecionar um monitor externo, não o painel interno, e clicar em Advanced... Um script de linha de comando está abaixo.

Mas, para parar de rasgar o painel Intel no modo Nvidia Prime, você precisa do Prime Sync. Essa é a coisa mais difícil de se trabalhar. Eu uso o desktop gnome em 17.04, mas esqueço de usar o gdm3. Fique com o lightdm como gerenciador de exibição. gdm3 tem um bug no momento, parece forçar uma sessão de wayland e isso não está funcionando. Com lightdm, você pode habilitar a sincronização principal para uma experiência livre de rasgo, usando os drivers nvidia mais recentes (que estão em um PPA, presumo que você tenha descoberto). Você precisa criar um novo arquivo modprobe chamado para carregar após o nvidia existente, e então reconstruir seu initramfs para isso (limpar e reinstalar drivers nvidia faz isso como um efeito colateral, mas demora um pouco mais). Eu atualizarei esta resposta com instruções completas se esta for a sua situação. Funciona bem agora, com os drivers mais recentes (cerca de uma semana). Até então, funcionou, mas tivemos pânico no kernel. Agora parece estável. Existe um fórum na nvidia para drivers linux que tem um thread muito ativo. Então, obter a sincronização principal é a solução (2b)

Não tenho certeza se há muito sentido para o Prime Sync no meu laptop. Eu também posso conseguir o que eu quero usando o modo discreto se estiver usando vários monitores (quase o tempo todo), e quando eu quiser uma bateria de longa duração, eu troco para Intel prime-select no modo híbrido. Isso significa uma viagem às configurações da BIOS, mas a alteração do modo principal exige uma reinicialização de qualquer maneira. Em outras palavras, eu nunca preciso disso, mas funciona (agora).

Se você executar gráficos híbridos no modo intel, é fácil corrigir o rasgo no painel do laptop, já que a placa nvidia desaparece da imagem (literalmente). A sincronização principal é, portanto, irrelevante. Nenhum monitor externo, neste caso, é claro. No meu laptop, eu tenho que usar uma configuração para ativar a inteligência sem lágrimas; esta é uma configuração xorg. Eu tenho um script prime-select_tim que restaura essa configuração quando executado no modo intel, e remove-lo quando executado no modo nvidia. Isso é porque x não iniciaria em nvidia privilegiada se esta configuração ainda estivesse ativa em /usr/share/X11/xorg.conf.d Você disse que teve problemas ao tentar usar o perfil de intel. Eu achei o X muito exigente com o conteúdo do / usr / share / X11 quando rodando no modo híbrido da Nvidia. Ele funciona se você não adicionar nada (é por isso que eu tenho um script que esconde meu arquivo 20-intel.conf se eu mudar para o modo nvidia híbrido).

Observe também que você deve ter certeza de que o pacote xserver-org-video-intel está instalado. A descrição do pacote implica que você não vai precisar dele ("desencorajado se o seu hw é novo o suficiente (ca. 2007 e mais recente)." Apesar disso, é essencial.

Esta é a solução (3). Note que eu não sei se deixar este arquivo no xorg.conf.d quando no modo híbrido-nvidia ainda causa problemas, eu não testei isso por um tempo.

Este é o meu 20-intel.conf para corrigir o rasgo no painel do laptop quando no modo híbrido-intel. Ele não corrige o rasgo no painel do laptop quando está no modo híbrido-nvidia (na verdade, mesmo simplesmente deixando este arquivo, pode impedir que o X inicie). Apenas a sincronização principal pode ajudá-lo.

Section "Device"
     Identifier  "Intel Graphics"
        Driver      "intel"
        Option      "TearFree"    "true"
 EndSection

~

Eu trabalhei tudo isso enquanto usava o xfce, então eu sei que funciona lá também. Mas o gnome em 17.04 é tão legal que eu mudei. Eu não testei isso em Unity.

== Modo Nvidia híbrido ==

Então, para elaborar a obtenção de nenhum rasgo no modo nvidia híbrido: Neste modo, a placa nvidia renderiza tudo.Ele pode gravar diretamente em telas externas, portanto, qualquer rasgo em telas externas é apenas um problema da nvidia. O ForceCompositionPipeline foi a correção que eu precisava.

Você pode ativar isso a partir da linha de comando. Veja o que eu faço.

#!/bin/bash
nvidia-settings --assign CurrentMetaMode="$(nvidia-settings -q CurrentMetaMode -t|tr '\n' ' '|sed -e 's/.*:: \(.*\)/\n/g' -e 's/}/, ForceCompositionPipeline = On}/g')" > /dev/null

Eu não sou o autor desse trecho, mágico demais para mim. Você também pode fazer isso no painel de controle avançado da Nvidia, mas certifique-se de clicar na representação do monitor externo. O painel PRIME, ou seja, o painel do laptop, não mostra essa configuração

Se isso não corrigir o lacrimejamento, não posso ajudar, mas isso significa que seu problema é um problema de driver nvidia, nada a ver com a sincronização principal ou principal. Estou usando o driver 384.59 do PPA. Veja link

Para desenhar no painel do laptop, a placa nvidia grava na memória usada pelo cartão de intel, que então exibe na tela. Isso é "Prime". Com certeza você tem este trabalho, caso contrário não haveria imagem no seu painel de laptop.

Mas o Prime Sync é o próximo nível. Conseguir sincronizar os dois cartões para evitar lacrimejar precisa do Prime Sync, algo tão novo que só nas últimas semanas vimos uma solução estável. O driver nvidia precisa operar na configuração do modo kernel, o que ele não faz por padrão.

sudo vi /etc/modprobe.d/zz-nvidia-modeset.conf

e use este conteúdo:

 options nvidia_384_drm modeset=1

que obviamente assume que você tem um driver 384.

então     sudo update-initramfs -u

caso contrário, o novo arquivo de texto não terá nenhum efeito. Eu não me importo com o que alguém diz sobre as configurações no grub2, usar esse arquivo de texto é a única coisa que funcionou para mim e é a solução aceita no thread nvidia Prime Sync.

Não use o gdm3, use o lightdm se você usa o gdm3 atualmente. Espero que o bug do gdm3 seja corrigido antes do Ubuntu 17.10, onde provavelmente será o gerenciador de exibição padrão :) Se você não tem certeza, então isso:

dpkg-reconfigure lightdm 

depois reinicie.

tim@raffles:~$ xrandr --properties | grep PRIME
    PRIME Synchronization: 1 
    
por Tim Richardson 01.08.2017 / 06:21
0

Este tutorial explica por que isso está acontecendo e como corrigi-lo: link

    
por Jimster 30.07.2017 / 10:11
0

Advertência com resposta aceita no Ubuntu 16.04

Eu não testei as ramificações, mas as respostas aceitas dizem para criar o arquivo /etc/modprobe.d/zz-nvidia-modeset.conf e usar este conteúdo:

options nvidia_384_drm modeset=1

No entanto, isso contradiz um arquivo existente no mesmo diretório:

$ cat /etc/modprobe.d/nvidia-graphics-drivers.conf
# This file was installed by nvidia-384
# Do not edit this file manually

blacklist nouveau
blacklist lbm-nouveau
blacklist nvidia-current
blacklist nvidia-173
blacklist nvidia-96
blacklist nvidia-current-updates
blacklist nvidia-173-updates
blacklist nvidia-96-updates
blacklist nvidia-384-updates
alias nvidia nvidia_384
alias nvidia-uvm nvidia_384_uvm
alias nvidia-modeset nvidia_384_modeset
alias nvidia-drm nvidia_384_drm
alias nouveau off
alias lbm-nouveau off

options nvidia_384_drm modeset=0

Apenas algo que você deve tomar cuidado ...

Resposta mais curta

Uma resposta mais curta baseada na resposta de Tim Richardson. Para sistemas com processador Skylake e nVidia GTX 970M controlando HDMI. Limpe a instalação do Ubuntu 16.04 e não execute nenhuma das outras etapas da resposta. Basta usar Dash para iniciar o NVIDIA X-Server Settings :

Clique no botão Advanced para disponibilizar a opção Force Composition Pipeline . Em seguida, verifique e aplique as alterações.

Note que há uma opção para salvar o arquivo de configuração:

O próximo passo para tornar a correção permanente do Screen Tearing é detalhado em ArchLinux . Em uma casca de noz:

  1. Mover /etc/X11/xorg.conf para /etc/X11/xorg.conf.d/20-nvidia.conf
  2. Edite o arquivo e insira 3 linhas (veja abaixo)
  3. Salve o arquivo e reinicie (eu tive que fazer isso duas vezes e a terceira tela do hotplug no Thunderbolt 3 USB-C.

As 3 linhas para adicionar a /etc/X11/xorg.conf.d/20-nvidia.conf :

 Option         "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
 Option         "AllowIndirectGLXProtocol" "off"
 Option         "TripleBuffer" "on"
    
por WinEunuuchs2Unix 10.12.2017 / 19:18