Screen Tearing

Entenda o que é o screen tearing e como corrigir em placas Intel, AMD e NVIDIA, além de corrigir em sistemas com GPU’s híbridas, como o caso dos notebooks gamers.


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


Introdução

O Screen Tearing é um fenômeno que acontece quando sua tela não consegue reproduzir as imagens na mesma velocidade que a placa de vídeo transmite. Esse fenômeno cria uma “imagem quebrada” e geralmente ocorre em jogos que exigem um gráfico mais alto. – Daí o nome, screen tearing: tela partida/cortada.

O que acontece é bem simples, digamos que sua placa de vídeo consiga emitir 80 frames por segundo ou quadros por segundo (O famoso FPS), enquanto seu monitor só consegue gerar 60 desses frames/quadros.

O que vai acontecer é que a taxa de atualização do seu monitor não conseguirá acompanhar a da placa de vídeo, e seu monitor irá transmitir uma imagem com falta de informações, enquanto no próximo segundo vai receber ainda mais informações, e também não vai conseguir reproduzir tudo. Essa bagunça gera o Screen Tearing.

Note o corte de tela na altura do “espelho”, no começo da imagem.

Imagine que você tirou uma foto e depois moveu a câmera um pouco pro lado e tirou outra foto, depois colocou uma foto sobrepondo a outra só que com a parte de cima de uma e a parte de baixo da outra juntas, o Screen Tearing é exatamente isso.

Mas isso tem fácil solução, como mostraremos a seguir!

Requisitos

Este tutorial se destina a:

  • Usuários de qualquer sistema Linux
  • Usuários de GPU’s Intel, NVIDIA ou AMD, híbridas ou não
  • Usuários do servidor gráfico Xorg!
    Se você usa Mir, este tutorial não é para você.

Troca de Drivers

Atentos que todas as soluções apresentadas nesta publicação se tornarão inválidas caso você troque o driver de vídeo! Se mudar a versão do driver de video, lembre-se de se certificar que está tudo em ordem e, se necessário, recrie os arquivos e configurações.

Solução do Screen Tearing

Placas de Vídeo Onboard Intel

Faça esse comando criando a pasta xorg.conf.d:

$ sudo mkdir /etc/X11/xorg.conf.d/

Crie um arquivo chamado 20-intel.conf:

$ sudo nano /etc/X11/xorg.conf.d/20-intel.conf

E adicione estas linhas dentro dele:

Section "Device"
 Identifier "Intel Graphics"
 Driver "Intel"
 Option "AccelMethod" "sna"
 Option "TearFree" "true"
EndSection

Certifique-se de que o terminal reconheceu as ” adequadamente!

Salve com CTRL + O
Feche com CTRL + X

Reinicie o sistema na GPU Intel e certifique-se que o Screen Tearing desapareceu.

Caso você não veja screen tearing em games mas ainda vê no navegador de internet, desça mais a matéria até o tópico “Navegador de Internet”

Placas de Vídeo e CPU AMD (Sem Intel e Sem NVIDIA!)

Faça esse comando criando a pasta xorg.conf.d:

$ sudo mkdir /etc/X11/xorg.conf.d/

Crie um arquivo chamado 20-amd.conf:

$ sudo nano /etc/X11/xorg.conf.d/20-amd.conf

E adicione estas linhas dentro dele:

Section "Device"
 Identifier "Radeon"
 Driver "radeon"
 Option "TearFree" "on"
EndSection

Certifique-se de que o terminal reconheceu as ” adequadamente!

Salve com CTRL + O
Feche com CTRL + X

Reinicie o sistema e certifique-se que o Screen Tearing desapareceu.

Caso você não veja screen tearing em games mas ainda vê no navegador de internet, desça mais a matéria até o tópico “Navegador de Internet”

Placa de Vídeo NVIDIA (Proprietário)

Para quem tem GPU Nvidia, com ou sem GPUi Intel.

Ubuntu 18.04 ou Anteriores:

$ sudo nano /etc/modprobe.d/nvidia-drm-modeset.conf

Adicione a seguinte linha:

options nvidia-drm modeset=1

Salve com CTRL+O
Saia com CTRL+X

Ubuntu 19.04 ou Posteriores!

$ sudo nano /lib/modprobe.d/nvidia-drm-modeset.conf

Adicione a seguinte linha:

options nvidia-drm modeset=1

Salve com CTRL+O
Saia com CTRL+X

A maior mudança foi na pasta raíz, que era /etc e agora é /lib!

Atualize seu initramfs:

$ sudo update-initramfs -u

E reinicie o sistema.
Com este comando, certifique-se que o modeset está ativo, a saída deverá ser Y ou S!

$ sudo cat /sys/module/nvidia_drm/parameters/modeset

Placa de Vídeo NVIDIA (Nouveau)

Somente para quem usa GPU Nvidia e não tem qualquer placa Onboard.
Se não for o seu caso, vá para o item abaixo “Intel + NVIDIA” ou “Intel + AMD”.

Basta ligar o VSYNC do Nouveau, criando o arquivo /etc/X11/xorg.conf.d/20-nouveau.conf e inserindo isso dentro:

Section "Device"
 Identifier "nvidia card"
 Driver "nouveau"
 Option "GLXVBlank" "true"
EndSection

Placas Híbridas Intel + AMD

Para caso você possua uma GPU Intel + GPU AMD no mesmo computador e queira fazer uso delas de forma alternada.

Intel

Volte acima e vá até o método “Placas de Vídeo Onboard Intel”

AMD

Volte acima e vá até o método “Placas de Vídeo AMD”

Caso você não veja screen tearing em games mas ainda vê no navegador de internet, desça mais a matéria até o tópico “Navegador de Internet”

Placas Híbridas Intel + NVIDIA (Proprietário)

Para caso você possua uma GPU Intel + GPU NVIDIA no mesmo computador e queira fazer uso delas de forma alternada.

Intel

Volte acima e vá até o método “Placas de Vídeo Onboard Intel”

NVIDIA

Volte acima e vá até o método “Placas de Vídeo NVIDIA (Proprietário)”

OBS: Certifique-se de estar usando o driver de vídeo 410.x ou 415.x, essas 2 versões receberam atualizações que corrigem screen tearing automaticamente.

Esse método de correção já está embutido dentro do arquivo prime-select, quem faz a alternância entre a GPU Intel e a GPU NVIDIA como pode ver:

def _enable_kms(self):
kms_text = ”’# This file was generated by nvidia-prime
# Set value to 0 to disable modesetting
options nvidia-drm modeset=1”’
kms_fd = open(self._nvidia_kms_file, ‘w’)
kms_fd.write(kms_text)
kms_fd.close()

Ou seja, só use em caso de extrema necessidade!

Ajustando

Agora que você definiu o arquivo .conf de ambas as placas, vamos criar um script que vai alternar entre as 2 através do prime-select!

Crie uma pasta oculta em sua /home/$USER chamada .prime.

$ mkdir /home/$USER/.prime

Edite como root o arquivo /usr/bin/prime-select com seu editor de textos favorito.

Desça até a parte que diz:

if profile == ‘nvidia’:
# Always allow enabling nvidia
# (No need to check if nvidia is available)
self._enable_nvidia()

else:
# Make sure that the installed packages support PRIME
#if not self._supports_prime():
# sys.stderr.write(‘Error: the installed packages do not support PRIME\n’)
# return False
self._disable_nvidia()

Vou apagar o que está com # para facilitar o entendimento, são apenas comentários:

if profile == ‘nvidia’:
self._enable_nvidia()

else:
self._disable_nvidia()

Você vai adicionar estas linhas, deixando o código da seguinte maneira:

if profile == ‘nvidia’:
os.system(“mv /etc/X11/xorg.conf.d/20-intel.conf /home/$USER/.prime/20-intel.conf”)
self._enable_nvidia()

else:
os.system(“mv /home/$USER/.prime/20-intel.conf /etc/X11/xorg.conf.d/20-intel.conf”)
self._disable_nvidia()

Em negrito é uma linha só!
Além disso, atento onde diz “$USER”, mude para o seu usuário.

Explicando:

Sempre que você clicar no menu, ou rodar o comando prime-select e trocar pra GPU Intel, ele vai mover o arquivo de .prime para /xorg.conf.d, ativando o removedor de Screen Tearing.

Quando você voltar pra Nvidia, o arquivo será movido de volta para .prime.

  • Por que?

Porque o XOrg desde 2014 perdeu o suporte a alternar entre as 2 placas preservando o arquivo .conf na pasta xorg.conf.d. Se você deixar o arquivo 20-intel.conf lá, e entrar no sistema com a NVIDIA ativa, o sistema perderá vídeo, vai bugar!

Execute estes comandos seguidamente e sem reiniciar, não importando sua placa em uso:

$ sudo prime-select intel
$ sudo prime-select nvidia
$ sudo prime-select intel

Esses comandos alternados  farão o arquivo .conf em prime-select ser reconhecido e ir para a pasta adequada, deixando o sistema pronto para uso.

Reinicie seu sistema, trocando de placa, e veja se o screen tearing desaparece na Intel; troque para a Nvidia e reinicie novamente, veja se o problema sumiu!

Caso você não veja screen tearing em games mas ainda vê no navegador de internet, continue para o tópico “Navegador de Internet”

Placas Híbridas Intel + NVIDIA (Nouveau)

Para caso você possua uma GPU Intel + GPU NVIDIA no mesmo computador e queira fazer uso delas de forma alternada.

Intel

Volte acima e vá até o método “Placas de Vídeo Onboard Intel”

NVIDIA

Volte acima e vá até o método “Placas de Vídeo NVIDIA (Nouveau)”

Reinicie seu sistema, trocando de placa, e veja se o screen tearing desaparece na Intel; troque para a Nvidia e reinicie novamente, veja se o problema sumiu!

Caso você não veja screen tearing em games mas ainda vê no navegador de internet, continue para o tópico “Navegador de Internet”

Navegador de Internet

Vamos supor que você aplicou as correções e resolveu seu problema, mas no Google Chrome, por exemplo, ainda dá Screen Tearing quando você desce a tela de algum feed ou assiste vídeos no Instagram… O problema é no navegador.

No caso do Chrome:

Não importando sua GPU, basta que você abra as configurações do Chrome neste endereço:

chrome://settings/

E ative a opção:

Ao ativar a Aceleração de Hardware quando Disponível você elimina o Screen Tearing no Chrome!

Lembrando que este método só funciona, na NVIDIA, se você usar o driver proprietário!
Se utilizar o Nouveau, não funcionará porque a Google considera o Nouaveu pouco estável/seguro.

No caso do Firefox:

Basta navegar até o endereço:

about:preferences

E ativar a opção de aceleração de hardware em:

Os navegadores quase sempre darão Screen Tearing sem aceleração de hardware.

Rolagem Suave

Uma das dicas que ajudam muito na hora de diminuir o Screen Tearing ao navegar na internet é desabilitar a rolagem suave (ou rolagem natural, em alguns sistemas) nas configurações de Touchpad/Mouse de seu sistema. Essa opção costuma usar aceleração 3D e caso mal implementada pela sua distro, ou por algum bug diverso, pode causar o problema.

Conclusão

O Screen Tearing é um problema chato que afeta os usuários Linux mas por sorte temos diversos meios de resolve-lo, não importando seu hardware!

Gostaria de pedir que dessem seu feedback, principalmente dos usuários AMD, para saber se todos os comandos estão funcionais, se há dúvidas e o mais importante: se tudo funciona a contento.

#UrbanCompassPony

Fontes:
Processtec
Diolinux
Agradeço cordialmente ao Raul Dipeas, criador do Sistema Linux RaDiX, pelas dicas da modificação do arquivo prime-select!

6 comentários em “Screen Tearing”

  1. Também estou com esse problema. Nada funfa, quando eu faço esses passos o meu PC perde o processamento gráfico, até o login fica como se fosse um terminal, já cansei de formatar por conta disso. Estava no ubuntu deu esse problema, tentei várias vezes e nada, estou no elementary OS, mesmo problema.

    I7 3770
    8ram DDR3
    GTX 1050 ti nvidia

    Responder
  2. Opa, tudo certo? Fiz exatamente como diz no post, resolveu meu problema tanto nos jogos quanto no navegador. Porém toda vez que inicio o linux mint, ele inicia em modo recovery e pede para reiniciar o cinnamon, sabe o que pode ser?

    Responder
    • No Linux Mint depende do seu compositor de tela. Se for Xfce, por exemplo, abra o Desktop Settings e mude o Window Manager do Xfwm4 + Compositing para Xfwm4, ou Xfwm4 + Compton ou ainda Metacity. No caso do MATE, é Preferences > Desktop Settings > Windows > Window Manager. Mude as configurações do Marco + Compositing para Marco + Compton, ou outros. Pode haver algum conflito com o compositor e o código usado no //etc/X11/xorg.conf.d/…

      Responder

Deixe um comentário