¿Qué es Vulkan y en qué se diferencia de OpenGL?

151

Khronos Group (el organismo de estándares detrás de OpenGL) acaba de anunciar Vulkan :

Vulkan es la API estándar abierta de nueva generación para el acceso de alta eficiencia a gráficos y computación en GPU modernas. Este diseño básico, anteriormente conocido como la Iniciativa OpenGL de próxima generación, proporciona a las aplicaciones un control directo sobre la aceleración de la GPU para maximizar el rendimiento y la previsibilidad.

Su página es bastante comercial / jerga , como lo es el comunicado de prensa ... En términos simples, ¿qué significa Vulkan para los desarrolladores de juegos? (Se cita a Gabe Newell como muy partidario, sin más explicaciones).

¿Cuál es exactamente la relación de Vulkan con OpenGL? Su nombre anterior "glNext" (abreviatura de "Iniciativa OpenGL de próxima generación") suena como un reemplazo.


Actualización: La especificación Vulkan 1.0 se lanzó el 16-02-2016.

Anko
fuente
3
Qo'noS y Vulcan ...
IllidanS4
14
Traducción para personas que no captan la deriva de Star Trek : Khronos y Vulkan suenan como Qo'noS y Vulcan ; los planetas del mundo natal de las razas klingon y vulcano. Leonard Nimoy , el actor de Spock (un personaje muy popular) murió recientemente el 27/02/2015, por lo que abundan las especulaciones de que el nombre fue un tributo. Sin embargo, fue una coincidencia: El Vulkan solicitud de marca fue presentada el 19/02/2015; antes de la muerte de Nimoy.
Anko
77
También Manto -> Lava -> Volcán -> Vulkan.
jmegaffin
1
@Boreal Vulkan == Volcán en muchos idiomas (alemán, ruso (ajustado por cyr.), Etc.). Así que es Mantle -> Lava -> Vulkan (Volcano) realmente :)
user362515

Respuestas:

119

Vulkan es una nueva API para gráficos acelerados por hardware (y computación general) a través de GPU tradicionales. OpenGL continuará desarrollándose, ya que es una API de nivel más alto de lo que Vulkan pretende ser. Originalmente referido a "glNext", se puede inferir que Vulkan probablemente terminaría siendo "OpenGL 5", pero que el organismo de estándares finalmente decidió que un nuevo nombre coincidiría mejor con la ruptura relativamente limpia que la API pretende hacer de las existentes. Paradigmas de OpenGL.

Las ventajas prácticas de Vulkan para los desarrolladores de juegos son principalmente sobre el control (como permitir más, lo que potencialmente permite mejores optimizaciones a costa de un trabajo inicial significativamente más por parte del desarrollador). Específicamente:

  • La API está orientada a la generación asíncrona de buffers de comandos en varios subprocesos y al procesamiento secuenciado de esos buffers en una tubería de comandos. Esto refleja las realidades del hardware moderno. La mayoría de los programas de alto perfil y / o alto rendimiento creados en OpenGL implementan hoy este tipo de comportamiento; Tener la API admite esto en sí mismo, lo que significa que los desarrolladores no necesitan implementar y mantener ese marco ellos mismos, o que pueden hacerlo con menos esfuerzo.
  • Las tareas de gestión de hilos y memoria se dejan a la aplicación, no al controlador, lo que permite a los desarrolladores de juegos un mayor control sobre esos comportamientos y, por lo tanto, una adaptación potencialmente más precisa de esos comportamientos a las necesidades de sus juegos individuales.
  • Las capas de validación y diagnóstico se pueden habilitar de forma independiente, lo que permite en teoría una mejor integración de herramientas con la API (algo que OpenGL ha sufrido) y la desactivación de la validación excesiva, en teoría permitiendo que " los gráficos en el nivel tres " sean mucho más eficaces.
  • No existe una diferencia diferencial de API entre las versiones para dispositivos móviles y de escritorio, lo que en teoría facilitará la transferencia de juegos multiplataforma y, en todo caso, reducirá los dolores de cabeza de verificación de versiones que todo el mundo odia.

Vulkan es muy similar a C / OpenGL en estructura superficial (la apariencia de las llamadas API, etc.) Sin embargo, está mejor tipeado (en el sentido de que no todo es simple int; hay tipos de letra relevantes, etc.).

Es mucho más bajo que OpenGL. Uno puede esperar un salto en la configuración operativa y la complejidad entre OpenGL y Vulkan, como se vio en la transición D3D9 a D3D10, que expuso muchos más detalles ocultos del funcionamiento del dispositivo GPU al cliente API. La transición es en realidad más parecida a D3D11 a 12, ya que D3D12 es en sí una API muy similar a Vulkan, en cuanto a capacidad.

Josh
fuente
18
Puede valer la pena señalar que Vulkan es básicamente una versión muy iterativa de Mantle: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/… Las convenciones API parecen algo similares a DSA OpenGL, excepto con el glprefijo ubicuo reemplazado por vk: blog.imgtec.com/powervr/…
jmegaffin
Había estado asumiendo que este sería el caso, pero no había visto ninguna evidencia hasta ese enlace, gracias.
Josh
3
Para su información, podrá reemplazar la especulación y las conjeturas con (algunos) hechos concretos después de la presentación de Valve el jueves y la suspensión de los miembros de Khronos que revelan más detalles (en su mayoría) se levanta.
Sean Middleditch
44
Me parece un poco divertido el código de bytes del sombreador, teniendo en cuenta que solía haber un lenguaje simple similar al ensamblado para los sombreadores, y luego fue reemplazado por un lenguaje complejo (GLSL), y ahora volvemos a un lenguaje de código de bytes simple.
Immibis
2
Pensé que Vulkan, como Mantle, estaría junto a OpenGL para obtener más acceso de bajo nivel, no reemplazarlo por completo. Al menos eso es lo que he leído hasta ahora. ¿O Vulkan cubrirá las operaciones de bajo y alto nivel?
Roy T.
18

Para elaborar sobre el futuro de OpenGL:

OpenGL podría lograr un rendimiento comparable al de Vulkan, en llamadas de extracción por segundo, pero también con respecto a la sobrecarga general del controlador:

  • Las extensiones de OpenGL más recientes en realidad eliminan una gran cantidad de sobrecarga del controlador al hacer que todo sea sin enlace (por ejemplo, ARB_direct_state_access(4.5 núcleos) ARB_bindless_texture, ...).
  • Con el mapeo persistente ( ARB_buffer_storagenúcleo en 4.4), la CPU puede acceder directamente a la memoria intermedia, por lo que la sincronización con la GPU también es explícita, al igual que Vulkan.
  • Es probable que extensiones futuras como NV_command_list(ver la presentación Siggraph Asia 2014 de Tristan Lorach ) proporcionen a OpenGL el mismo "paradigma de alimentación de GPU" que Vulkan.
Alex
fuente
11
Esta no es en realidad una respuesta a la pregunta por sí sola.
MichaelHouse
1

Khronos anunció recientemente el lanzamiento de la nueva API Vulkan, que complementará (y en algunos casos reemplazará) OpenGL y OpenGL ES. Vulkan es una API de bajo costo diseñado para acercar el código al metal, aumentando el rendimiento y la eficiencia. Se basa en la API Mantle de AMD, y se espera que la especificación final a finales de este año.

En esta publicación - Una breve descripción general de la API de Vulkan - El editor técnico de Toptal, Nermin Hajdarbegovic, explica por qué Vulkan podría ser un gran problema a largo plazo. Puede llevar un tiempo, pero esta API multiplataforma podría mejorar drásticamente el rendimiento 3D en ciertos dispositivos, especialmente los procesadores de aplicaciones de múltiples núcleos que se utilizan en miles de millones de teléfonos inteligentes y tabletas.

Dmitry Pavlov
fuente
2
"Khronos anunció recientemente el lanzamiento de la nueva API de Vulkan" Um, no a partir del 18 de agosto no lo ha hecho. No ha sido "publicado" por ninguna definición de ese término. Ahora es el 8 de diciembre y aún no se ha lanzado.
Nicol Bolas
2
@NicolBolas - Tiene ahora. Se lanzó hoy: khronos.org/vulkan
beatgammit