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

94

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

Eu digo isso porque eu uso usado 5 distros diferentes em 4 computadores diferentes com vários monitores e placas gráficas Nvidia / AMD / ATI / Intel; todas as vezes, houve um problema com o vídeo sendo distorcido, mesmo com um leve movimento.

Este é um grande problema, especialmente porque mesmo o Windows XP não tem esses problemas em hardware moderno. Se alguém vai usar o Linux para qualquer coisa, por que eles querem defeitos constantes para aparecer ao fazer qualquer coisa que não seja CLI?

Suponho que poucos desenvolvedores sabem sobre esse problema ou se importam o suficiente para corrigi-lo. Eu tentei quase todos os compositores lá fora, 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 entre a comunidade OSS que está impedindo qualquer um de comprometer código que conserte isso?

Toda vez que eu pedi ajuda sobre essa questão no passado, ela é tratada como um caso extremo (que acho difícil acreditar que é dada a quantidade de vezes que eu repliquei o problema) ou soluções potenciais que, no máximo, minimizam o rasgo.

    
por Ravenstine 04.02.2015 / 05:01

8 respostas

87

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 embutidos de sincronização entre o usuário renderizando a janela e a tela exibindo uma janela, de modo que o conteúdo muda no meio da renderização. Este é um dos problemas mais conhecidos do servidor X (tem muitos, todo o modelo do que o servidor faz e está desatualizado - manipulação de eventos em sub-janelas, metadados sobre janelas, primitivos gráficos para desenho direto ...). Os toolkits de widgets, na maioria das vezes, querem encobrir tudo isso, mas rasgar ainda é um problema, porque não há mecanismo para lidar com isso. Problemas adicionais surgem quando você tem vários cartões que requerem drivers diferentes, e além de tudo isso, a biblioteca opengl tem uma dependência de hard-wired no xlib, então você não pode realmente usá-lo independentemente sem passar pelo X.

O Wayland, que tenta de alguma forma substituir o X, suporta uma sinonização pedante vsync em seu núcleo e é anunciado para ter todos os quadros perfeitamente perfeitos.

Se você rapidamente google wayland video tearing , encontrará mais informações sobre tudo.

    
por 04.02.2015 / 10:07
16

A quebra de tela aparece principalmente por causa de dois motivos: os drivers que ainda não existem e a falta de vsync com determinados gerenciadores de janela.

Quanto aos drivers, os drivers gratuitos e proprietários suportam composição de rasgamento livre (nvidia e amd both). Esteja ciente de que, por exemplo A habilitação de área de trabalho livre de lágrimas no catalisador ( fglrx ) pode causar perda de quadros e atrasos, por isso normalmente é desabilitado por padrão. Quanto ao driver aberto, o vsync deve estar ativado por padrão. Assim, o problema de rasgo de tela pode ser resolvido tentando drivers diferentes e configurando-os.

Quanto aos gerenciadores de janelas, sabe-se que o Openbox, o Awesome e outros wms leves não suportam o uso de tear-free. XFCE (xfwm, para ser específico) corrigiu em versões recentes, 4.11 / 12 agora tem Vsync. Os principais ambientes de desktop também não apresentam problemas com o rasgo, incluindo o GNOME, o KDE, o Unity e o Cinnamon.

Se você ainda tiver um rasgo de 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 suportava o vsync e funcionava muito bem.

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

    
por 04.02.2015 / 08:22
11

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

    
por 28.11.2016 / 02:28
7

Eu tive um strong corte aqui e agora está resolvido.

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

Quando a composição é 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 para a placa de exibição em uma tomada.

A maioria das distribuições modernas tem um gerenciador de janelas de composição. KWin para KDE, Mutter para Gnome, Muffin para Cinnamon, Marco para Mate, xfwm para XFCE, etc. Entretanto, a composição pode ser desabilitada para salvar recursos.

No meu caso, a composição foi desativada no KDE4. Uma vez habilitado, o rasgo foi embora. EDITAR : Eu também precisava alterar nas opções do KWin a estratégia do VSync de Automático para Reutilizar o conteúdo da tela para se livrar do tearing assim como explicado neste relatório de erros específicos 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 tem uma ótima documentação sobre as opções para diferentes placas de exibição, como Cartões da Intel ou NVIDIA cards .

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

cat /var/log/Xorg.0.log | grep DRI
    
por 22.01.2016 / 18:50
1

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

Basta ir para Desktop Settings - > Windows - > Window Manager e escolha Metacity + Compton . É isso.

Eu tenho placa de vídeo AMD e funciona de maneira simples 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 uma cor azul que preencherá a tela inteira. Para corrigir isso, crie e chmod +x o script abaixo:

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

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

    
por 29.11.2015 / 17:09
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 na vertical em branco".

    
por 21.02.2018 / 00:27
0

Estou usando o Linux Mint XFCE e esse problema me frustrou por um bom tempo. Eu encontrei a solução para o meu laptop com placa gráfica integrada da Intel e resolvi o problema de rasgo . Para o meu desktop com placa NVIDIA, esse truque não funciona. Mas eu acabei de encontrar culpado.

Eu tenho um aumento imediato no desempenho quando desabilitei a composição da janela. Veja como você pode fazer isso:

Vá para Todas as configurações / Gerenciador de janelas Tweaks / Compositor e desabilite tudo isso.

Tenha em mente que isso é específico da distro e o meu é Mint com XFCE e não tenho idéia de como encontrar algo similar em outras distros.

    
por 28.04.2018 / 09:40
-1

Use MPV.

Mas você não pode aumentar o zoom. O zoom é uma droga mesmo assim!

    
por 12.12.2018 / 07:39