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”
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!
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Estou com esse problema no Ubuntu 20.04 e tentei esse método e não resolveu, tenho esse problema desde o Ubuntu 18.04.
Qual seu processador e placa de video?
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
Uso um Odyssey Corei5 com GTX 1050 Mobile, o método funciona normalmente pro Ubuntu MATE 18.04 e 20.04.
Nao sei se algo muda no ElementaryOS.
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?
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/…