Como faço para interromper o vídeo? (Driver Nvidia Prop, gerenciador de janelas sem composição)

35

Eu tenho esse problema que aparentemente aflige muitos usando o driver proprietário da Nvidia:

Video tearing: fine horizontal lines (usually near the top of my display) when there is a lot of panning or action in the video.

(Nota: voltar para o driver nouveau padrão não é uma opção, pois seu gerenciamento de energia aparentemente inexistente drena minha bateria várias vezes mais rápido)

Eu tentei o Totem, o Parole e o VLC, e o tearing ocorreu com todos eles. O melhor resultado foi usar X11 output no VLC, mas ainda há rasgos com ação relativamente moderada.

Hardware: MacBook Air 3,2 - que possui uma Nvidia GeForce 320M.

Existem duas correções comuns para rasgar com os drivers da Nvidia:

  1. Desativar a composição , já que os drivers proprietários da Nvidia geralmente não são compatíveis com os gerenciadores de janelas de composição no Linux (o Compiz é uma exceção da qual estou ciente). Mas eu uso um gerenciador de janelas extremamente leve (gerenciador de janelas Awesome) que nem sequer é capaz de composição (ou quaisquer efeitos legais). Eu também tenho esse problema no Xfce, onde eu tenho composição desativada.

  2. Ativando a sincronização com o VBlank. Para ativar isso, defino a opção em nvidia-settings e, em seguida, inicio-a automaticamente como nvidia-settings -l com meus outros programas de início automático. Isso parece funcionar, porque quando eu corro glxgears , fico:

    $ glxgears
     Running synchronized to the vertical refresh.  The framerate should be
    approximately the same as the monitor refresh rate.
    303 frames in 5.0 seconds = 60.500 FPS
    300 frames in 5.0 seconds = 59.992 FPS
    

    E quando eu verificar a taxa de atualização usando nvidia-settings :

    $ nvidia-settings -q RefreshRate
    Attribute 'RefreshRate' (wampum:0.0; display device: DFP-2): 60.00 Hz.
    

    Tudo isso sugere que a sincronização com o VBlank é ativada. Pelo que entendi, isso é precisamente projetado para parar de rasgar, e o problema de muitas pessoas é até obter algo como glxgears para produzir as informações corretas. Eu não entendo porque não está funcionando para mim.

xorg.conf : link

Exemplo de violação observada: :

    
por Chan-Ho Suh 26.04.2012 / 07:37

17 respostas

18

Uma coisa para tentar que maio funcione. Abra as configurações nvidia e vá para a seção do powermizer. Escolha "Maximum Performance" no drop-down, e você deve ver o seu nível de PowerMizer pular para a velocidade mais rápida.

Depois de fazer isso, experimente o vídeo.

No passado, descobri que o vsync não funciona quando a placa nvidia está na configuração mais lenta do PowerMizer.

    
por mjnichol 12.09.2012 / 08:00
11

Se você estiver usando monitores duplos, o driver nvidia só poderá sincronizar com o vblank de um dos monitores, a menos que eles usem exatamente a mesma taxa de atualização. E eu quero dizer exatamente . Isso é efetivamente impossível, a menos que os dois monitores sejam exatamente do mesmo tipo. Caso o driver da nvidia esteja sincronizando com a tela errada (por exemplo, sincronizando com a tela embutida quando você quiser assistir a um filme na TV externa), você pode substituir sua escolha. Da documentação do driver da nvidia:

When using __GL_SYNC_TO_VBLANK with TwinView, OpenGL can only sync to one of the display devices; this may cause tearing corruption on the display device to which OpenGL is not syncing. You can use the environment variable __GL_SYNC_DISPLAY_DEVICE to specify to which display device OpenGL should sync. You should set this environment variable to the name of a display device; for example "CRT-1". Look for the line "Connected display device(s):" in your X log file for a list of the display devices present and their names.

Eu configurei isso permanentemente em / etc / environment - basta adicionar algo assim em uma nova linha:

__GL_SYNC_DISPLAY_DEVICE="DFP-0"

    
por Alistair Buxton 21.05.2012 / 03:25
7

Eu também estava sofrendo de vídeo rasgando no meu processador Intel Sandy Bridge. Isso funcionou para mim. Eu coloquei as seguintes linhas em "/ etc / environment" -

CLUTTER_PAINT = disable-clipped-redraws: desativação-seleção
CLUTTER_VBLANK = True

e funcionou. Pressione enter no final e copie e cole essas linhas. Pode exigir o reinício. Experimente.

    
por BRKsays 26.04.2012 / 11:10
4

Aqui está como resolvi problemas de vsync para vídeo no meu notebook ASUS K50IN com a NVIDIA GeForce G102M . Estou ciente de que sua milhagem pode variar desde que os cartões sejam diferentes, mas você pode experimentá-lo ... O truque para mim foi usar o barbar do MPlayer (mas não o MPlayer2!). Não funciona com nenhum dos outros jogadores.

  1. Faça a mágica usual do compiz em ccsm

    • Em Composite, desative Detect Refresh Rate e insira o atual do seu monitor manualmente.
    • liguei "Copiar para textura", não sei se isso ajudou ou não.
    • Em OpenGL: Tex. Filter - Melhor
    • Sincronizar com VBlank está em
    • Plug-in do Unity: (não tenho certeza se isso ajudou algum, mas supostamente melhora a velocidade) Opacidade do painel - 1,0000, mesmo para a opacidade do iniciador. Dash Blur - Estático
  2. Faça a mágica usual nvidia-settings:

    • Ativar sincronização no VBlank nas configurações do XVideo e do OpenGL
    • Definir configurações de imagem para alta qualidade em configurações OpenGL
    • Em Configuração de exibição, defina sua resolução manualmente e defina sua taxa de atualização de Automático para sua taxa de atualização atual.
  3. Instale o mplayer e o vdpau (NÃO mplayer2 !!! Isso é novo e experimental e, para mim, pelo menos, estava lento com o VDPAU)

    • Pacotes: mplayer libvdpau1 vdpau-va-driver
  4. Configure o MPlayer (eu tentei o gnome-mplayer também, mas ele não tem o mesmo resultado que eu tentei)

    • Abra o arquivo ~ / .mplayer / config ou crie-o se você não o tiver. Você também pode ter que criar a pasta .mplayer . Deve conter isto:
[default]
ao=pulse
vo=vdpau

Altere ao para alsa se você removeu o pulso de áudio.

Reinicie o X fazendo logout / in novamente.

Experimente, YMMV como sempre. Descobri que, especialmente em versões não LTS ou com drivers beta, isso pode não funcionar mais, dependendo do codec do vídeo.

    
por Amir Dizdarević 23.10.2012 / 21:44
1

Isso funcionou para mim em um driver ATI radeon, então pode funcionar para você:

Adicione um arquivo de configuração (por exemplo, /etc/X11/xorg.conf.d/20-nouveau.conf)

consistindo nisso:

Section "Device"
    Option      "EXAVsync"  "True"
    Option      "GLXVBlank" "True"
    Identifier  "Nvidia card"
    Driver      "nouveau"
EndSection

EXA é o framework para composição de vídeo; não parece vsnc por padrão.

Também pode valer a pena testar um software diferente (por exemplo, vlc) para reproduzir vídeo.

    
por Mark Williams 26.04.2012 / 08:03
1

Não tenho certeza se isso te ajudará, mas funcionou para mim. Abra as configurações da nvidia e altere a Freqüência de Auto para 60. E pressione aplicar. Isso resolveu meus problemas com o vídeo rasgando e a tela geral piscando. Infelizmente eu tenho que fazer isso toda vez que eu reinicio.

    
por vicentec 30.04.2012 / 14:54
1

Eu estava passando pelos mesmos problemas de vídeo. No meu caso, observei que a derrubada acontece apenas no modo de tela cheia. O problema parece estar em escalar o vídeo para tela cheia. Sempre que o tamanho original do vídeo reproduzido e as taxas de resolução de tela não corresponderem, o conteúdo será desmontado. Definir a proporção no smplayer para a proporção do monitor corrigiu o problema para mim.

por exemplo. Eu estava jogando um vídeo de tamanho 1280x714 em tela cheia que havia rasgo no vídeo. Conforme forcei a proporção do vídeo para 16: 9, a reprodução foi suave.

Eu tenho que notar que a causa raiz do problema permanece lá e é irritante. Como a proporção não é mantida original, haverá alguma deformação no vídeo. No entanto, é melhor assistir sem lágrimas;)

    
por focknvidia 15.10.2012 / 23:40
1

Eu uso o Ubuntu 12.04LTS 64bit e tenho um nvidia gtx 660ti.

Eu estava sofrendo de vídeo rasgando por mais de um mês até que encontrei uma solução.

Abra nvidia x configurações do servidor -> PowerMizer -> Configurações do PowerMizer (próximo ao fundo), e onde diz , "Modo preferido", altere a configuração de Adaptável para Prefira o desempenho máximo.

    
por user144925 28.03.2013 / 04:28
1

Atualizar para a versão 319 do PPA resolveu o problema:

Se, após a inicialização, ele for executado no modo à prova de falhas, entre em recuperação e execute sudo nvidia-xconfig . Reprodução de vídeo feliz!

    
por BrozzSama 05.05.2013 / 22:21
0

Se você não estiver usando o monitor dual, há outra possibilidade. Existem dois tipos diferentes de sincronização para o vblank: um para o XVideo e outro para o OpenGL. Em nvidia-settings, um está em "Configurações do X Server XVideo" e o outro está em "OpenGL / Settings". Qual deles realmente afeta seu software de reprodução de vídeo pode depender de qual plug-in de saída ele está usando.

    
por Alistair Buxton 21.05.2012 / 03:54
0

Eu não tenho certeza da sua descrição se você está realmente vendo lacrimejamento; normalmente, o tearing parece que a imagem é dividida horizontalmente em duas ou três seções, com as partes não correspondentes. Isso acontece porque a parte superior da imagem e a parte inferior não são provenientes do mesmo quadro no vídeo. A Wikipédia tem um bom exemplo de de screen tearing . Linhas horizontais finas soam diferentes, mais como penteando artefatos do desentrelaçamento deficiente, embora talvez seja difícil descrever .

Você não menciona nenhum detalhe do vídeo que está tentando assistir, como sua resolução, codificação e se ele está entrelaçado ou progressivo, e se o desentrelaçamento está ativado no VLC. Também vale a pena verificar se o processamento de vídeo está sendo transferido para a GPU ou se a CPU está fazendo todo o trabalho. Você confirmou que pode visualizar com êxito o mesmo vídeo em hardware diferente ou no MacBook usando o OS X?

Você diz que tentou usar a composição desativada no XFCE, mas provavelmente não faria mal tentar adicionar:

Section "Extensions"
    Option "Composite" "Disable"
EndSection

para o seu /etc/X11/xorg.conf apenas para ter certeza. Além disso, uma outra sugestão não mencionada até agora é adicionar:

Option "UseEvents" "True"

para as seções Device ou Screen do seu xorg.conf.

ATUALIZAÇÃO:

A captura de tela anexa definitivamente mostra lacrimejamento! Se, de outra forma, o player estiver acompanhando a decodificação do vídeo (ou seja, sem lentidão de gagueira, apenas o tearing), provavelmente não importa se é a CPU ou a GPU que faz a decodificação. VLC tem uma opção na página de configurações de vídeo em Preferências para ligar e desligar "Saída de vídeo acelerado"; se está ligado, deveria estar usando a GPU para decodificar. Se você alternar essa configuração no VLC e executar top em um terminal enquanto reproduz o vídeo, deverá notar uma diferença no uso da CPU entre as duas configurações. Você também pode tentar desativar qualquer desentrelaçamento no VLC para ver se isso faz diferença.

Eu tenho duas outras sugestões:

Eu não vejo nada obviamente errado com o seu xorg.conf, mas você pode verificar que ambas as configurações sync to vblank (no X Server XVideo Settings e OpenGL Settings) estão armazenadas corretamente no .nvidia-settings-rc. Algumas pessoas rodam nvidia-settings como root ou usando o gksudo (assim ele pode atualizar o /etc/X11/xorg.conf), mas isso pode fazer com que as configurações sejam armazenadas em /root/.nvidia-settings-rc ao invés de ~ /. nvidia-settings-rc. Deveria estar pegando sua própria cópia, mas para evitar qualquer dúvida, você deve checar ambas as configurações do vblank quando estiver rodando nvidia-settings como você; não se esqueça de clicar em "Salvar configuração atual" na página inferior das configurações. Se você correr:

nvidia-settings -q=XVideoTextureSyncToVBlank -q=SyncToVBlank

então você deve ver que ambas as configurações estão definidas para 1. Você provavelmente também deve verificar se o carregamento automático das configurações está funcionando, reiniciando e executando o comando acima novamente.

A outra coisa que você poderia tentar seria atualizar / fazer o downgrade de seus drivers nvidia. Eu experimentei rasgar com algumas atualizações menores de versão do driver antes; Definitivamente, existem versões "boas" e "ruins" dos drivers nvidia e as mais recentes nem sempre são as melhores. Você pode tentar atualizar usando o X-swat PPA:

link

E você pode tentar fazer downgrade para uma versão anterior disponível para 12.04:

link ou link

, dependendo de você ter o amd64 ou o i386 instalado. Clique no número da versão à direita que você deseja tentar, baixe o arquivo .deb e instale com:

sudo dpkg --install <name of file>.deb

Por exemplo, devido a um erro nvidia não relacionado, tive que fazer o download:

link

de

link

e instalou-o usando:

sudo dpkg --install nvidia-current_290.10-0ubuntu2_amd64.deb

Um outro ponto minúsculo: uma outra resposta menciona a alteração da taxa de atualização de Auto para 60Hz e você diz que já está definido para 60Hz. No entanto, o xorg.conf anexado possui nvidia-auto-select em metamodes (na seção Screen), o que sugere que ele não é fixo. No entanto, a sua definição de Monitor oferece apenas 60.0, então talvez isso seja irrelevante. Pode ser interessante fazer backup e mover seu xorg.conf e executar novamente o nvidia-xconfig e o nvidia-settings para ver se você obtém uma configuração diferente.

    
por David Edwards 21.05.2012 / 23:15
0

Além do post anterior de David: se você quiser instalar os drivers proprietários mais recentes da NVidia usando o X-swat PPA, você também pode adicioná-lo às suas fontes do apt:

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current

Isso instalará a versão mais recente e o manterá atualizado em relação às entregas.

    
por Yanok 07.10.2012 / 10:11
0

Desculpe esta resposta é um pouco para o openSuSE, não para o Ubuntu, mas finalmente consegui trabalhar com essas mudanças,

  • Desativar efeitos de composição / janela temporariamente (alt + shift + f12 no openSuSE)
  • Use o VLC com a configuração "Video" definida como "saída de vídeo OpenGL (experimental)". "Saída de vídeo acelerada (Overlay)" também é verificada para mim. Estou usando o VLC 2.1.1 se isso importa.
  • Defina as configurações do PowerMizer para desempenho, como na resposta do mjnichol
  • Defina as configurações do OpenGL para alta, como na resposta de Amir Dizdarević

Espero que ajude! Imagino que exista alguma configuração para que funcione com composição, mas recomendo pelo menos desativar a composição para testes. Minha configuração é um monitor 4K e uma placa gráfica GTX 650.

    
por gatoatigrado 20.01.2014 / 03:39
0

Você pode corrigir isso para o VLC alterando a saída de vídeo para "OpenGL GLX".

    
por user279078 14.05.2014 / 16:44
0

Estou executando o Elementary OS Luna de 64 bits (baseado no Ubuntu 12.04 LTS) e tive o mesmo problema. Pesquisando por aí, eu finalmente encontrei um método que funciona e, obviamente, inclui a solução "Configurações do Powermizer para desempenho", como muitos outros peaople já disseram.

O problema é que, após a reinicialização, essas configurações são restauradas para a configuração padrão "Auto" e, aparentemente, o aplicativo Nvidia-Settings não salva adequadamente as novas configurações do PowerMizer. NÃO PREOCUPAR !!!

SIGA AS INSTRUÇÕES ABAIXO, É SOOOOO SIMPLES:

link

Como diz o artigo, crie um aplicativo de inicialização e você é bom para ir !!!! CONFIE EM MIM, ISTO FUNCIONA!!! Muito obrigado ao Aquablue por postar isso e, claro, ao Mike da Nvidia Customer Care que forneceu a solução !!!

FYI, eu tenho um Phenom II X4, RAM DDR3 de 8GB, SSD Corsair, GTX 650, Elementar Luna de 64 bits.

    
por Spyros P. 14.12.2014 / 08:58
0

Eu poderia pegar a janela com o cursor, mover a janela e consertar o lacrimejamento. Então, parece que há alguns problemas de retorno de chamada no X.

Para mim, a correção da vlc foi:

vlc - > ferramentas - > preferências - > video - > na lista suspensa 'saída', escolha x11 video output(XCB)

    
por abr 13.06.2015 / 03:49
-2

Parece que você está executando algum gerenciador de janelas leve (presumivelmente openbox). Se for esse o caso, é possível que você esteja usando o xcompmgr como um gerenciador de composição para obter efeitos da área de trabalho, como sombras, transparências etc. No meu caso, desligar o xcompmgr resolveu o mesmo problema: rasgar enquanto assistia a vídeos, especialmente aqueles em HD (que são intensivos da CPU). Aparentemente, o rasgo ocorreu devido a um erro no xcompmgr, que é um projeto muito abandonado. Para desligar o xcompmgr você pode executar o "killall xcompmgr". Isso deve funcionar. Espero que ajude! Saludos! Pablo.

    
por Usemos Linux 22.05.2012 / 05:17