Los motivos por los que tu GPU está al 100% en juegos poco exigentes

De tanto en cuando aparecen juegos que están tan mal optimizados que pese a tener un nivel visual muy pobre acaban por forzar la GPU al máximo. Este tipo de juegos pese a ser ya muy antiguos no escalan de la misma manera que otros y nos llevan a decepciones cuando esperamos cierto nivel de mejora al actualizar la GPU. ¿Por qué ocurre?

Siempre hay ese juego que se resiste a rendir como se esperaba en el hardware más nuevo, ya sea en resolución, tasa de frames o una mezcla de ambas.  Y no por ser una maravilla técnica, sino por tener una optimización pésima a la hora de utilizar los recursos del hardware, en especial de la GPU.

¿Por qué hay juegos mal optimizados?

Crysis DX10 juegos mal optimizados GPU

El motivo por el cual ciertos videojuegos están mal optimizados y llegar a sobreutilizar la GPU son varios, aunque más bien no es un problema de hardware sino de software y como este utiliza el hardware. Muchas veces el hecho de que el código de un programa funcione no significa que esté bien escrito y por tanto sea correcto, llevando a problemas de rendimiento aunque no de funcionamiento.

Dicho de otra manera, hay juegos que aparentemente funcionan a la perfección, pero utilizando muy mal los recursos de hardware. ¿Las causas más comunes que llevan a ello? Principalmente tres, las cuales os relatamos a continuación.

La falta de uso de herramientas de optimización

NVIDIA DLSS NSIGHT

Un tipo de herramienta que se utiliza en el desarrollo son los medidores de rendimiento, estos programas lo que hacen es indicar el nivel de uso del hardware mientras se ejecuta el juego. Permitiendo la optimización a través de reducir la carga de trabajo en las partes de la GPU donde se ven saturadas por un lado, y por el otro dando la opción de utilizar aún más las partes con menos carga.

Cuando tanto AMD como NVIDIA lanzan nuevos drivers con perfiles optimizados, en realidad esos perfiles lo que hacen es ajustar las opciones gráficas del juego a lo más adecuado para cada una de las tarjetas gráficas para su optimización. Pero esto no se hace con los juegos más antiguos sino los más nuevos. El porqué de ello se entiende fácilmente, quieren aprovechar el «Momentum» de cada juego para vender sus tarjetas gráficas en la actualidad.

El uso de las herramientas de optimización es importante para sacar el máximo rendimiento en los juegos, pero en algunos casos son relativamente recientes y nos podemos encontrar con juegos antiguos sin estas optimizaciones y con cuellos de botella en ciertas partes del pipeline gráfico que les impide escalar como es debido.

Juegos originalmente optimizados para consola y no para PC

Captura Horizon Zero Dawn

Las consolas actuales, a excepción de la Nintendo Switch, se basan en la misma tecnología que el PC por lo que al contrario de lo que ocurría hace años donde una conversión a PC requería el uso de la resescritura de buena parte del código. A día de hoy buena parte de los juegos de PC son portados desde consola casi sin optimizar.

La cosa se agrava si tenemos en cuenta que Microsoft con sus consolas, Xbox Series S y Xbox Series X, utiliza la misma API que en PC,  DirectX 12 Ultimate. Lo que se traduce en que en ninguna de las tres plataformas se aproveche el hardware al mismo nivel, ya que esto no permite optimizaciones concretas del código tanto en PC como en consolas.

Por el otro lado, tenemos casos en los que los juegos al ser ports directos desde la versión de consola, optimizada para AMD, termina por rendir lo peor de lo esperado en tarjetas gráficas con GPUs de NVIDIA. Especialmente por la optimización del código de los programas shader que ejecuta la GPU.

Batches, otra causa para los juegos mal optimizados

CPU GPU

Uno de los factores comunes de muchos juegos mal optimizados tiene que ver con la comunicación CPU ↔ GPU, para ello tenemos que aclarar que son los «Batches». Hemos de entender que una GPU realmente no hace más que seguir las órdenes que la CPU le genera a través de una serie de listas de comandos. Todos los motores gráficos que utilizan los juegos generan estas listas de pantalla, las cuales le dicen a la GPU como renderizar las cosas en pantalla.

Para una mejor optimización es mucho mejor minimizar la cantidad de envíos a la GPU, esto se hace creando listas de pantalla con la suficiente cantidad de cosas a realizar. Si las listas de pantalla son cortas y por tanto el número de «Batches» que se envían es muy pequeño entonces la GPU se pasará buena parte esperando nuevas cosas a hacer, lo que provocará tiempos muertos y un mal uso de los recursos de este hardware.

Los «Batches» además no son las listas de pantalla, sino también los datos que se copian del almacenamiento a la RAM y de la RAM a la VRAM. En el proceso de copia la VRAM no puede ser utilizada por la GPU, a no ser que existan varios canales de memoria, y con ello se limita el rendimiento.