Por que o vídeo está causando um problema no Linux?

101

Eu tenho usado muitas variantes do Linux (principalmente derivados do Debian) há mais de uma década. Um problema que não vi resolvido de maneira satisfatória é a questão do rasgo horizontal ou o Vsync não está sendo implementado adequadamente.

Digo isso porque uso 5 distros diferentes em 4 computadores diferentes com vários monitores e placas gráficas Nvidia / AMD / ATI / Intel; sempre houve um problema com o rasgo do vídeo com movimentos leves.

Esse é um grande problema, especialmente porque mesmo o Windows XP não possui esses problemas no hardware moderno. Se alguém vai usar o Linux para alguma coisa, por que eles querem que defeitos constantes apareçam ao fazer algo que não seja CLI?

Suponho que poucos desenvolvedores conheçam esse problema ou se importem o suficiente para corrigi-lo. Eu tentei praticamente todos os compositores por aí, e geralmente o melhor que eles podem fazer é minimizar o problema, mas não eliminá-lo. Não deveria ser tão simples quanto sincronizar com a taxa de atualização do monitor? Existe alguma política na comunidade OSS que impeça alguém de cometer código que conserte isso?

Toda vez que pedi ajuda sobre esse problema no passado, ele é tratado como um caso de extrema importância (o que acho difícil de acreditar, devido à quantidade de vezes que repliquei o problema) ou obtive possíveis soluções que minimizar no máximo o rasgo.

Ravenstine
fonte
2
Você não menciona qual DE você usa. O KDE está bem com o rasgo há mais ou menos um ano.
Sparhawk 04/02
1
Como alguém poderia facilmente replicar o problema? Em um computador Debian / Ubuntu / Mint?
Xen2050
50
Este XKCD apenas parece se encaixar muito bem aqui ...
Angew
Minha experiência com lacrimejamento foi completamente diferente. Sou um jogo muito feliz e assisto a filmes no Linux. O Steam realmente tornou o Linux uma plataforma viável para grandes jogos. Ultimamente, tenho jogado Witcher 2 e Talos Principle, e não vejo nenhum rasgo em 50 horas de jogo. Isso ocorre com uma placa Nvidia com drivers proprietários no Arch. Eu concordo com o Xen2050 que essa pergunta seria mais útil se fossem fornecidas especificações exatas para suas compilações. Não estou negando que haja um problema, apenas tive uma experiência muito boa.
labyrinth
Com a composição da Nvidia, resolvi o problema para mim, quando eu costumava usar a Nvidia em 2007. Porém, não em tela cheia, porque as janelas de tela cheia desligam o compositor, pressupõe que você esteja executando um jogo OpenGL, eu acho. Com a Intel, você tentou configurar a Seção "Opção" Dispositivo "TearFree" "true" no X? Dobra o uso da RAM de vídeo, mas acho que funcionará.
Zan Lynx

Respostas:

92

Isso tudo se deve ao fato de o servidor X estar desatualizado, inadequado para o hardware gráfico de hoje e basicamente toda a comunicação direta da placa de vídeo é feita como uma extensão ("patch") do antigo núcleo inchado. O servidor X não fornece meios internos de sincronização entre o usuário que renderiza a janela e a tela que exibe uma janela; portanto, o conteúdo muda no meio da renderização. Esse é um dos problemas conhecidos do servidor X (ele tem muitos, todo o modelo do que o servidor faz e está desatualizado - manipulação de eventos em sub-janelas, metadados sobre janelas, primitivas gráficas para desenho direto ...). Os kits de ferramentas de widget geralmente querem encobrir tudo isso, mas o rasgo ainda é um problema porque não há mecanismo para lidar com isso. Problemas adicionais surgem quando você possui várias placas que exigem drivers diferentes,

Wayland, que tenta, sem entusiasmo, substituir o X, suporta uma sincronização pedante vsync em seu núcleo, e é anunciado que tem todos os quadros exatamente perfeitos.

Se você pesquisar rapidamente no Google "rasgar vídeos de wayland", encontrará mais informações sobre tudo.

orion
fonte
38
+1pois "X é o problema, dê uma olhada em Wayland". Falando sério, é a resposta correta.
precisa saber é o seguinte
2
@HalosGhost evangelismo em wayland em movimento :) ainda não há suporte para sessões de rede?
kagali-san
3
@ kagali-san Eu não disse que Wayland era perfeito (não é). Mas é definitivamente melhor do que X. :)
HalosGhost
8
@ kagali-san: Weston teve seu back-end RDP fundido há apenas um ano, se você achar isso de alguma forma relevante para uma pergunta sobre o rasgo de vídeo.
grawity
3
@orion: e, graças a você, esta página é agora o principal resultado para wayland video tearing: P
Tobia Tesan
16

O rompimento de tela aparece principalmente por dois motivos: drivers que ainda não existem e falta de vsync em determinados gerenciadores de janelas.

Quanto aos drivers, os drivers gratuitos e proprietários oferecem suporte à composição de rasgo livre (nvidia e amd ambos). Esteja ciente de que, por exemplo, ativar a área de trabalho sem lágrimas no catalisador ( fglrx) pode causar quedas e atrasos no quadro, por isso geralmente é desativado por padrão. Quanto ao driver aberto, o vsync deve estar ativado por padrão. Portanto, o problema de rompimento de tela pode ser resolvido ao tentar drivers diferentes e configurá-los.

Quanto aos gerenciadores de janelas, sabe-se que o Openbox, o Awesome e outros wms leves não suportam o rasgo. O XFCE (xfwm, para ser específico) o corrigiu em versões recentes, o 4.11 / 12 agora possui o Vsync. Os principais ambientes de área de trabalho também não têm problemas com o lacrimejamento, incluindo GNOME, KDE, Unity e Cinnamon.

Se você ainda tiver problemas com a tela, sua opção é tentar outro gerenciador de composição como Compton ou Kwin. O Kwin é o gerenciador de janelas do KDE e tenho experiência em usar o kwin no XFCE quando ele não suporta o vsync e funcionou muito bem.

Portanto, a solução aqui é a experimentação, o que está quebrado em uma combinação de driver / ui pode funcionar em outro. Acredito que a situação melhorará em breve, pois os drivers de código aberto estão se tornando mais avançados e a mudança para wayland pode se livrar de problemas antigos do Xorg.

Kirill-a
fonte
5
Na verdade não. O KDE (com o Kwin ou outro compositor) ainda chora demais com a NVidia ou a Intel.
1026 Ivan Ivan
1
O Openbox etc. funciona sem rasgos - você simplesmente precisa executar um compositor separado, por exemplo, o compton funciona maravilhosamente.
Wingedsubmariner
1
@wingedsubmariner, quando vocês se referem ao openbox, você também quer dizer fluxbox?
Nass 24/04
Além disso, é extremamente útil observar o estado do WM em diferentes ambientes de janelas.
Nass 24/04
@nass Absolutamente. O gerenciador de janelas nunca é um fator limitante.
wingedsubmariner
14

Se você estiver usando um driver nvidia> = 365.20, tente ativar a opção "Forçar pipeline de composição completa" em nvidia-settings.

insira a descrição da imagem aqui

FuzzyTree
fonte
nVidia Quadro em um Lenovo W520, Fedora 25 e isso funcionou :)
Jerther
4
Além disso, se você não tiver essa opção, clique em "configurações avançadas" na parte inferior da janela e ela será exibida. porque este "pipeline composição completa" não está habilitado por padrão ..?
Rast
1
@Rast Porque costumava ter alguns problemas de desempenho.
Ruslan
BTW, parece que pelo menos os drivers da Intel também têm uma TearFreeopção que você pode colocar na Deviceseção correspondente . Acabei de experimentar e fornece resultados muito semelhantes ao pipeline de composição completa da nvidia.
Ruslan
Não consigo obter a configuração para salvar nas reinicializações. Tentei criar um arquivo ~ / .xinitrc e colocar "nvidia-settings --load-config-only &. / Etc / X11 / xinit / xinitrc" nele, mas isso parece não funcionar
FragmentalStew
9

Eu tive um rasgo forte aqui e agora está resolvido.

Depois de ler esta ( maravilhosa explicação ) de como um servidor Xorg funciona, percebi que o servidor X atualiza as janelas diretamente para o cartão de memória a qualquer momento, a menos que você use um gerenciador de janelas habilitado para composição.

Quando a composição está ativada, o gerenciador de janelas reúne todas as alterações dos diferentes buffers de memória da janela, cria uma imagem resultante para a tela inteira e a despeja no cartão de exibição de uma só vez.

A maioria das distribuições modernas possui um gerenciador de janelas de composição. KWin para KDE, Mutter para Gnome, Muffin para Canela, Marco para Mate, xfwm para XFCE, etc. No entanto, a composição pode ser desativada para economizar recursos.

No meu caso, a composição foi desativada no KDE4. Uma vez ativado, o rasgo foi embora. EDIT : Eu também precisei mudar nas opções do KWin a estratégia VSync de Automático para Reutilizar o conteúdo da tela , a fim de me livrar do rasgo, conforme explicado neste relatório de erros específico do kwin .

As opções do driver também podem ser um fator. No meu caso, as opções padrão funcionam bem. O Arch Wiki possui uma excelente documentação sobre as opções para diferentes placas de vídeo, como placas Intel ou placas NVIDIA .

Para verificar se uma opção está ativada na sua configuração atual do xorg, você pode verificar o log. Por exemplo, para verificar se o DRI está ativado:

cat /var/log/Xorg.0.log | grep DRI
David
fonte
1
No XFCE (no Xubuntu 16.04) a composição é ativada por padrão, mas a sincronização com o espaço em branco vertical não é . Use o xfwm4-tweaks-settingscomando para mostrar o aplicativo tweaker e, na guia Compositor, você pode encontrar a opção acima. Ligá-lo fez uma enorme diferença e pode ser verificado aqui: vsynctester.com/index.html (ativar / desativar o recurso enquanto exibe a animação). Não é perfeito, existem alguns quadros perdidos, mas muito melhor do que quando está desligado.
karatedog
1

A solução está aqui: o Linux Mint 17.3 MATE agora vem com o Compton .

Basta ir para Desktop Settings-> Windows-> Window Managere escolher Metacity + Compton. É isso aí.

Eu tenho uma placa de vídeo AMD e funciona imediatamente para o driver de código aberto.

Para o driver AMD proprietário, quando os vídeos HTML5 são maximizados para tela cheia, você pode ver a cor azul que preencherá a tela inteira. Para corrigir isso, crie chmod +xo script abaixo:

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

Execute-o sempre que reiniciar o sistema, mas não tente adicioná-lo Startup Applications- isso pode interromper a inicialização por algum motivo.

Constantine
fonte
0

No Peppermint Linux, vá para Preferências> Peppermint Control Center, selecione Efeitos da área de trabalho e ative "Ativar efeitos da área de trabalho" e "Sincronizar desenho com o espaço em branco vertical".

Stefan Reich
fonte
0

Estou usando o Linux Mint XFCE e esse problema me frustrou por um bom tempo. Eu descobri a solução para o meu laptop com a placa gráfica integrada Intel e resolveu o problema de lacrimejamento . Para o meu desktop com placa NVIDIA, esse truque não pode funcionar. Mas eu apenas encontrei o culpado.

Tenho um aumento imediato no desempenho quando desabilitei a composição da janela. Aqui está como você pode fazer isso:

Vá para Todas as configurações / Ajustes do gerenciador de janelas / compositor e desative tudo isso.

Lembre-se de que isso é específico da distribuição e o meu é o Mint com o XFCE e não tenho idéia de como encontrar algo semelhante em outras distribuições.

Dejan Petrovic
fonte