---
title: "Fix Screen Tear x11"
date: 2024-11-09T13:28:17+08:00
tags: ["Fix"]
image: cover.jpg
math: false
draft: false
---
# ¿Que es el screen tear?
buenas, Si alguna vez instalaron un wm liviano en linux que no use wayland seguramente habrán notado que al momento de mover una ventana en el escritorio o ver un video sucede algo de este estilo.

![Imagen sacada de google donde se demuestra el screen tear](https://qph.cf2.quoracdn.net/main-qimg-4994dca8fc9979e8a10d3422cb5f7bcb)

Donde la imagen se ve recortada por algunos milisegundos. A mi se me hace muy molesto a la vista cuando estoy mucho tiempo (relativamente) delante de la pantalla.

# Solucion
Esto Parece suceder porque muchos [WindowManagers](https://en.wikipedia.org/wiki/X_window_manager) de linux muestran un frame nuevo independientemente de si la gpu logró terminar de dibujar el proximo frame(buffer). 

Encontré un parametro que se le puede pasar al X11 para evitar que se muestre un frame que la gpu aun no termino de actualizar.

## Cosas que necesitamos
1. Tener `inxi` instalado  

En Arch se puede instalar con un

```
sudo pacman -S inxi
```

y supongo que lo mismo pero reemplazando `pacman -S` por `apt install` en distros debian-base.

2. Necesitamos editar uno(o dos) archivos en el **/usr/share/**

Asi que verifica que tengas permisos para poder escribir en ese path.

## Paso a Paso
1. Executamos `inxi -G`.

Con esto nos daremos cuenta de que tipo de grafica tenemos. En mi caso es una integrada amd

```
i ➜  ~ inxi -G
Graphics:
  Device-1: Advanced Micro Devices [AMD/ATI] Lucienne driver: amdgpu v: kernel
```

Por lo que el archivo que tengo que editar es "/usr/share/X11/xorg.conf.d/10-amdgpu.conf"

```
Section "OutputClass"
	Identifier "AMDgpu"
	MatchDriver "amdgpu"
	Driver "amdgpu"
	Option "HotplugDriver" "amdgpu"
EndSection
```

Donde añado la opcion "TearFree" "on"
```
Section "OutputClass"
	Identifier "AMDgpu"
	MatchDriver "amdgpu"
	Driver "amdgpu"
	Option "HotplugDriver" "amdgpu"
	Option "TearFree" "on"
EndSection
```

Demostracion de como queda

![demo tear resuelto](./tear.gif)
