Does doom have a Vulkan patch?

Vulkan llega a Yuzu: Más rendimiento para todos

23/02/2013

Valoración: 4.03 (4741 votos)

El telón se ha levantado para una de las características más esperadas por la comunidad de la emulación. Tras meses de desarrollo, anticipación y ruegos por parte de los usuarios, el equipo de Yuzu ha anunciado oficialmente la llegada de su renderizador basado en la API gráfica Vulkan. Este monumental lanzamiento, inicialmente disponible para los usuarios de Early Access, promete cambiar las reglas del juego, especialmente para aquellos que no cuentan con una tarjeta gráfica de NVIDIA. Es un hito que no solo trae mejoras de rendimiento, sino que también democratiza el acceso a una emulación de alta calidad de la Nintendo Switch.

Does doom have a Vulkan patch?
Id Software, Doom 's manufacturer, has released a patch this week that’ll bring Vulkan to the game. This makes Doom the first major game to release Vulkan as a patch as opposed to a proof of concept or beta. So what does Vulkan mean for you?

Durante años, los usuarios de Yuzu con GPUs de AMD o gráficos integrados de Intel se han enfrentado a una barrera significativa: el rendimiento deficiente de los drivers de OpenGL en Windows. Esto los dejaba con dos opciones poco ideales: migrar a Linux para aprovechar mejores drivers de código abierto o invertir en una GPU de NVIDIA. La llegada de Vulkan se presenta como la solución definitiva a este dilema, una promesa de paridad y optimización para todos.

Índice de Contenido

El Origen de una Necesidad: ¿Por Qué Vulkan?

Para entender la importancia de este lanzamiento, debemos retroceder en el tiempo. Yuzu, desde sus inicios, ha sido un emulador extraordinario, capaz de ejecutar juegos complejos con una fidelidad visual impresionante. Sin embargo, su dependencia casi exclusiva de OpenGL creó una brecha en la comunidad. Mientras que los usuarios de NVIDIA disfrutaban de una experiencia fluida gracias a los drivers altamente optimizados de la compañía, los usuarios de AMD se quedaban atrás, lidiando con un rendimiento inferior y problemas de compatibilidad.

El equipo de Yuzu, consciente de esta disparidad, se propuso encontrar una alternativa. La respuesta fue Vulkan, una API gráfica moderna, de bajo nivel, que ofrece un control más directo sobre el hardware y es conocida por su excelente rendimiento en una amplia gama de GPUs. El encargado de esta titánica tarea fue Rodrigo, también conocido como ReinUsesLisp, uno de los expertos en emulación de GPU del equipo. El viaje comenzó con lo básico, el equivalente a un "Hola Mundo" en el renderizado: lograr que el emulador mostrara una pantalla de un color sólido usando Vulkan. Poco a poco, y utilizando homebrews sencillos, el proyecto comenzó a tomar forma.

El Desafío Técnico: Reconstruyendo los Cimientos

Implementar Vulkan no fue tan simple como añadir unas pocas líneas de código. Requirió una reestructuración profunda de la arquitectura interna de Yuzu. Antes de sumergirnos en los detalles, es útil entender algunos conceptos clave:

  • GPU de la Switch: La Nintendo Switch utiliza una GPU de NVIDIA (de la arquitectura Maxwell), y los juegos pueden usar las APIs OpenGL o NVN (propietaria de NVIDIA) para comunicarse con ella.
  • Shaders: Son pequeños programas que le dicen a la GPU cómo dibujar los gráficos en la pantalla.
  • Traducción de Shaders: Yuzu funciona decodificando las instrucciones de los shaders de la Switch y traduciéndolas a un lenguaje que la GPU del PC pueda entender (como GLSL para OpenGL).
  • SPIR-V: Es el lenguaje intermedio que utiliza Vulkan para definir los shaders.

Uno de los primeros grandes retos fue cómo generar código SPIR-V para Vulkan. A diferencia de OpenGL, donde se podía traducir directamente a GLSL, Vulkan requería un paso intermedio. Para ello, Rodrigo creó Sirit, un ensamblador en tiempo de ejecución para generar código SPIR-V sobre la marcha. Sin embargo, esto reveló un problema mayor: el código base estaba tan entrelazado que mantener dos renderizadores (OpenGL y Vulkan) se estaba volviendo una pesadilla de errores y duplicación de código.

Does doom have a Vulkan patch?

La solución fue crear un Shader IR (Intermediate Representation o Representación Intermedia). Piensa en ello como un lenguaje universal dentro de Yuzu. El emulador decodifica los shaders del juego a este formato intermedio, y desde ahí, puede traducirlo fácilmente tanto a GLSL (para OpenGL) como a SPIR-V (para Vulkan). El desarrollador Blinkhawk jugó un papel crucial aquí, reescribiendo por completo el sistema de análisis de shaders, creando un descompilador avanzado que optimiza el código para un mejor rendimiento en GPUs de Intel y AMD.

Superando Obstáculos: La Reinvención de la Caché

Con el Shader IR en camino, surgieron otros dos obstáculos gigantescos que estaban profundamente arraigados en la arquitectura original de Yuzu: la caché de texturas y la caché de búferes.

Caché de Texturas

Este sistema gestiona todo lo relacionado con las texturas del juego. El problema era que la caché existente estaba diseñada exclusivamente para OpenGL, lo que hacía imposible adaptarla para Vulkan. Aunque se implementó una versión primitiva para hacer funcionar juegos como Sonic Mania, Blinkhawk vio la necesidad de una solución real. Reimplementó toda la caché de texturas desde cero, creando un sistema genérico y agnóstico a la API, capaz de funcionar a la perfección tanto con OpenGL como con Vulkan.

Caché de Búferes

De manera similar, la caché de búferes (que gestiona objetos de memoria de la GPU como datos de vértices y constantes) era una herencia del emulador Citra y no estaba preparada para las exigencias de Vulkan. Tras varios experimentos, Blinkhawk la reescribió también desde cero con un enfoque innovador: un mapeo 1:1 entre la memoria de la GPU emulada (Switch) y la memoria de la GPU del host (PC). Este nuevo sistema no solo es compatible con ambas APIs, sino que también mejora significativamente el rendimiento y reduce la sincronización entre el hardware emulado y el real.

Does doom support Vulkan?
Doom is one of the first (and only) titles with support for Vulkan and serves as a good benchmark for OpenGL vs Vulkan performance. In 1080p Full HD resolution and Ultra settings, the GTX 1080 is able to reach an average framerate of 140 FPS in OpenGL. Vulkan improves the framerate to 166 FPS, a fifteen percent increase.

La Hora de la Verdad: Vulkan vs. OpenGL en Yuzu

Con todos estos cambios fundamentales implementados, la pregunta del millón es: ¿cuál es el resultado en el rendimiento? Los resultados son, como mínimo, impresionantes.

  • Usuarios de AMD: Es la victoria más clara. Las GPUs de AMD ahora rinden a la par con sus contrapartes de NVIDIA en Yuzu, eliminando el cuello de botella que suponían los drivers de OpenGL en Windows.
  • Usuarios de Intel iGPU: También ven una mejora notable o, en el peor de los casos, un rendimiento similar, lo que abre la puerta a la emulación en sistemas menos potentes.
  • Usuarios de NVIDIA: Si bien OpenGL sigue siendo extremadamente rápido en NVIDIA, Vulkan aporta una ventaja sorprendente: la compilación de shaders. Efectos que en OpenGL podían tardar varios segundos en compilarse, causando micro-parones, ahora se compilan en milisegundos con Vulkan.

Para visualizar mejor las diferencias, aquí tienes una tabla comparativa conceptual:

CaracterísticaOpenGLVulkan
Rendimiento en NVIDIAExcelente y muy maduroBueno, con compilación de shaders casi instantánea
Rendimiento en AMD (Windows)DeficienteExcelente, a la par con NVIDIA
Rendimiento en Intel iGPUAceptableMejorado significativamente
EstabilidadMuy altaExperimental (algunos juegos pueden fallar)

No Todo es Perfecto: Las Limitaciones de Vulkan

Aunque Vulkan es un avance increíble, no es una solución mágica para todos los problemas. La GPU Maxwell de la Nintendo Switch tiene características de hardware que se mapean directamente a funciones de OpenGL, algunas de las cuales no tienen un equivalente directo en Vulkan. Esto incluye características como el alpha testing (usado en Smash Ultimate y Astral Chain), las bindless textures (usadas en Super Mario Odyssey) o la copia directa de imágenes de profundidad a color.

Cuando un juego de Switch utiliza una de estas funciones, el renderizador de Vulkan debe emularla utilizando métodos que pueden ser más lentos. En cambio, en OpenGL (especialmente en hardware NVIDIA), estas operaciones son nativas y más eficientes. Esto significa que, para la emulación de Switch, OpenGL sigue siendo una API increíblemente potente y, en ciertos escenarios, podría seguir siendo la opción superior. Vulkan brilla por su versatilidad y su capacidad para aprovechar hardware que no es amigable con OpenGL.

Preguntas Frecuentes (FAQ)

Pregunta: ¿Debería cambiarme a Vulkan ahora mismo?

Respuesta: Si tienes una GPU AMD o gráficos integrados de Intel, la respuesta es un rotundo sí. Pruébalo, ya que es muy probable que veas una mejora masiva en el rendimiento. Para los usuarios de NVIDIA, OpenGL sigue siendo una opción excelente y estable, pero vale la pena probar Vulkan para beneficiarse de la compilación de shaders más rápida. Recuerda que es una función experimental.

Is Vulkan better than OpenGL?
With Vulkan on yuzu, AMD GPUs now perform mostly on par with Nvidia GPUs. As an added benefit, Intel onboard graphics now have better or around the same overall performance too. On average, the performance is still a bit lower than what you’d observe on OpenGL, but that could change very soon with future optimisations. Note 1:

Pregunta: ¿Vulkan hará que todos mis juegos corran más rápido?

Respuesta: No necesariamente. Su principal beneficio es nivelar el campo de juego para las GPUs de AMD e Intel. En algunos juegos, el rendimiento puede ser similar o incluso ligeramente inferior al de un OpenGL bien optimizado. Además, algunos títulos como Luigi's Mansion 3 o ARMS todavía no son compatibles y pueden crashear.

Pregunta: ¿Qué necesito para probar el renderizador Vulkan en Yuzu?

Respuesta: Necesitarás una compilación de Yuzu que lo incluya (disponible primero en Early Access) y, fundamentalmente, tener los controladores de tu tarjeta gráfica actualizados a la última versión disponible. Los fabricantes están constantemente corrigiendo errores en sus drivers de Vulkan.

Pregunta: ¿Funciones como el escalado de resolución son compatibles con Vulkan?

Respuesta: En su lanzamiento inicial, el renderizador de Vulkan es experimental y aún no es compatible con la caché de shaders ni con el popular escalador de resolución. Estas características se integrarán en futuras actualizaciones a medida que el renderizador madure.

Si quieres conocer otros artículos parecidos a Vulkan llega a Yuzu: Más rendimiento para todos puedes visitar la categoría Tecnología.

Subir