Hoy andaba jugando al CS:GO, con los «bordes de sierra» que se hacen presentes al desactivar el antialiasing, o mas bien de los que nunca desaparecen en mi televisor de 32″ por ser «apenas» Full HD en una pantalla tan grande. Seguramente un monitor de 23 pulgadas de idéntica resolución y sin antialiasing, no de mayores inconvenientes, pero si tenes una tele la cosa cambia. Todas tienen una relación pixeles/pulgada mucho mas baja que un monitor gamer promedio, y televisores de 32″ 4K no existen. Ademas, siempre con estos televisores 4K se debe chequear si el controlador soporta representar 60 cuadros por segundo de manera constante y/o si tiene un Modo Juego.
Por suerte mi tele no me ocasiona problemas de estos ni tampoco Input Lag, pero parecía que tenia una falencia imposible de curar: No importaba si el antialiasing estaba en 1X u 8X, los bordes siempre estaban 🙁
Estos bordes pueden tratarse con mayores resoluciones, pero sin DSR ni VSR con soporte oficial en Linux, como hacemos?
Bueno, parece que antes de que DSR (Nvidia) y VSR (AMD) existiesen, ya la versión 1.1 de Xrandr (el paquete que se ocupa de manejar todo lo relacionado a salida de imagen en todos los sistemas Linux basados en X.org) soportaba emitir una «resolución virtual» al monitor. Y los resultados son bastante buenos y notables 😀
Ver los monitores conectados a la PC
Debemos abrir una Terminal y escribir lo siguiente, para averiguar el nombre asignado a nuestro monitor.
xrandr –listmonitors
El mio era HDMI-A-0, así que ya con eso y una leída rápida de la documentación, la cosa fue sencilla: mi resolución es de 1920×1080 que, duplicada, da 3840×2160 (2160p = 4K).
Así que ya de plano sabemos el nombre del display, ya notamos nuestra resolución nativa y queremos 4K. La escala tendrá que ser el doble. Entonces, en ese orden.
xrandr --output HDMI-A-0 --mode 1920x1080 --panning 3840x2160 --scale 2.0x2.0
Con un comando llamamos a Xrandr y pasamos a indicarle el nombre del display y todos los demás parámetros. Con –mode debemos indicar la resolución nativa y aplicada originalmente, con –panning tenemos la llave a nuestra felicidad y luego con –scale ajustamos la escala; que si fuera menor a 2 el sistema haría el equivalente a «Lupa» en Windows.
También podemos establecer una resolución menor, por ejemplo, si multiplicamos 1920 y 1080 por 1.5% respectivamente (esa seria la escala), resultaría en 2880×1620, que también es una resolución 16:9.
Update 23/04/18: Actualicé a una GTX 1070Ti y resulta que el nombre del display cambia constantemente. Mi solución fue almacenar en una variable el número de HDMI. También aclaro que uso mi resolución en 2K actualmente, porque es el puntito justo entre calidad y comodidad en el escritorio 😀 Verán que la escala está ajustada exactamente para esa resolución «menos fácil» de calcular frente a 2880×1620.
xrandr --listmonitors hdmiOutput=$? xrandr --output HDMI-$hdmiOutput --mode 1920x1080 --panning 2560x1440 --scale 1.3335x1.333
Xrandr, una vez aplicado, consume recursos?
Ademas de que la resolución aumenta y eso demanda recursos, parece que el rendimiento es el mismo: como si estuviéramos llevando a 4K nativos un monitor normal.
En nuestras pruebas, CS:GO necesito 36% de CPU a 1080p y 1440p, mientras que a 4K el uso se redujo a 33%. A 2K (1440p) el equipo se comporto ligeramente mejor que a 1080p incluso, aunque a 4K la R9 380 tuvo algunos «saltitos» esporádicos en el gameplay.
Pruebas de Xrandr con Xubuntu 16.04.3 LTS + R5 1500X + R9 380 2GB
El Ryzen 5 1500X estaba acompañado del excelente motherboard ASRock B350 Gaming ITX/AC WiFI y 2x8GB GSKill FlareX 3200MHz. La «Calidad Competitiva» es aquella que tiene un balance grafico y de FPS sin tener un detrimento a la hora de jugar (ya sea por Input Lag o porque el detalle gráfico nos pueda ocultar enemigos, por ejemplo). La calidad fue Media para todos los parámetros, sin Antialiasing ni Blur con el modo Multi-Nucleo activado.
Se realizaron 3 pasadas por cada resolución con Bots Expertos en el mapa Nuke y luego se promediaron. Tengamos en cuenta que Nuke es uno de los mapas mas complejos. Dust II por ejemplo, va arriba de 210fps en 1440p 😀
Recuerden que pueden aplicar esto con un archivo bash (.sh). Yo por ejemplo inicio Steam Big Picture en 4K así:
xrandr --output HDMI-A-0 --mode 1920x1080 --panning 3840x2160 --scale 2.0x2.0 steam -bigpicture
Y luego, si quisiera, desde «Sesion e Inicio» (Xubuntu) puedo agregar el script para que se inicie junto con el sistema 😀
Lo próximo sera que el mismo script ponga la resolución nativa para el escritorio, una vez que salgo de Steam 😀 Google es su amigo!
xrandr --output HDMI-A-0 --mode 1920x1080 --panning 1920x1080 --scale 1.0x1.0