O que é o Vulkan e como ele difere do OpenGL?

150

O Khronos Group (o órgão de padrões por trás do OpenGL) acaba de anunciar o Vulkan :

Vulkan é a nova geração, API de padrão aberto, para acesso de alta eficiência a gráficos e computação em GPUs modernas. Esse projeto básico, anteriormente referido como Iniciativa OpenGL da próxima geração, fornece aos aplicativos controle direto sobre a aceleração da GPU para desempenho e previsibilidade maximizados.

A página deles é bastante comercial / jargão - pesada , assim como o comunicado à imprensa ... Em termos simples, o que Vulkan significa para os desenvolvedores de jogos? (Gabe Newell é citado como sendo fortemente favorável, sem maiores explicações.)

Qual é exatamente o relacionamento do Vulkan com o OpenGL? Seu nome anterior "glNext" (abreviação de "Next Generation OpenGL Initiative") faz parecer um substituto.


Atualização: a especificação do Vulkan 1.0 foi lançada em 16-02-2016.

Anko
fonte
3
Qo'noS e Vulcan ...
IllidanS4
14
Tradução para pessoas que não entendem o desvio de Star Trek : Khronos e Vulkan soam como Qo'noS e Vulcan ; os planetas do mundo natal das raças Klingon e Vulcano. Leonard Nimoy , o ator de Spock (um personagem muito popular) morreu recentemente em 27/02/2015, então abundam as especulações de que o nome era uma homenagem. No entanto, foi coincidência: o pedido de marca registrada Vulkan foi arquivado em 19/02/2015; antes da morte de Nimoy.
Anko
7
Também Manto -> Lava -> Vulcão -> Vulkan.
precisa saber é o seguinte
1
@Boreal Vulkan == Vulcão em vários idiomas (alemão, russo (ajustado para cyr.), Etc). Então é Mantle -> Lava -> Vulkan (vulcão) realmente :)
user362515

Respostas:

118

Vulkan é uma nova API para gráficos acelerados por hardware (e computação geral) por meio de GPUs tradicionais. O OpenGL continuará sendo desenvolvido, pois é uma API de nível superior ao que o Vulkan pretende ser. Originalmente chamado de "glNext", pode-se inferir que o Vulkan provavelmente acabaria sendo "OpenGL 5", mas que o corpo de padrões finalmente decidiu que um novo nome coincidiria melhor com a quebra relativamente limpa que os APIs pretendem fazer com os existentes Paradigmas do OpenGL.

As vantagens práticas do Vulkan para desenvolvedores de jogos são principalmente sobre controle (como permitir mais, potencialmente permitindo melhores otimizações ao custo de um trabalho significativamente mais inicial por parte do desenvolvedor). Especificamente:

  • A API é orientada em torno da geração assíncrona de buffers de comando em vários encadeamentos e do processamento seqüencial desses buffers em um pipeline de comandos. Isso reflete as realidades do hardware moderno. Atualmente, a maioria dos softwares de alto perfil e / ou alto desempenho criados no OpenGL implementam esse tipo de comportamento; ter a API dando suporte a isso significa que os desenvolvedores não precisam implementar e manter essa estrutura, ou podem fazê-lo com menos esforço.
  • As tarefas de gerenciamento de threads e memória são deixadas para o aplicativo, não para o driver, permitindo que os desenvolvedores de jogos tenham mais controle sobre esses comportamentos e, portanto, adaptem potencialmente mais precisamente esses comportamentos às necessidades de seus jogos individuais.
  • As camadas de validação e diagnóstico podem ser ativadas independentemente, permitindo, em teoria, uma melhor integração de ferramentas com a API (algo que o próprio OpenGL sofreu) e desabilitando a validação excessiva, em teoria permitindo que " os gráficos no nível três " tenham muito mais desempenho.
  • Não há um forte diferencial de API entre as versões móvel e desktop, o que teoricamente facilitará a transferência de jogos de plataforma cruzada e, se nada mais, reduzir as dores de cabeça de verificação de versão que todo mundo odeia.

O Vulkan é muito parecido com o C / OpenGL na estrutura superficial (a aparência da API chama, etc.). No entanto, é melhor digitado (no sentido de que nem tudo é nulo int; existem typedefs relevantes e assim por diante).

É muito mais baixo que o OpenGL. Pode-se esperar um salto na configuração operacional e na complexidade entre o OpenGL e o Vulkan, como foi visto na transição do D3D9 para o D3D10, que expôs muito mais detalhes ocultos da operação do dispositivo GPU ao cliente da API. A transição é realmente mais parecida com D3D11 para 12, já que o D3D12 é uma API muito semelhante à Vulkan, em termos de capacidade.

Josh
fonte
18
Pode valer a pena ressaltar que o Vulkan é basicamente uma versão altamente iterada do Mantle: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/… As convenções da API parecem um pouco semelhantes ao DSA OpenGL, exceto com o onipresente glprefixo substituído por vk: blog.imgtec.com/powervr/…
jmegaffin 3/15/15
Eu estava assumindo que esse seria o caso, mas não tinha visto nenhuma evidência até esse link, obrigado.
Josh
3
Para sua informação, você poderá substituir a especulação e a adivinhação por (alguns) fatos concretos após a apresentação da Valve na quinta-feira e a moratória dos membros da Khronos revelando mais detalhes (principalmente).
quer
4
Acho a coisa de bytecode do shader um pouco divertida, considerando que costumava haver uma linguagem simples de montagem para shaders, e depois foi substituída por uma linguagem complexa (GLSL), e agora estamos voltando para uma linguagem simples de bytecode.
immibis 4/03/2015
2
Eu pensei que o Vulkan, como o Mantle, ficaria ao lado do OpenGL para obter mais acesso de baixo nível, não para substituí-lo completamente. Pelo menos é o que eu li até agora. Ou o Vulkan cobrirá operações de baixo e alto nível?
Roy T.
18

Para elaborar o futuro do OpenGL:

O OpenGL pode obter desempenho comparável ao Vulkan, em chamadas de empate por segundo, mas também em relação à sobrecarga geral do driver:

  • As extensões OpenGL mais recentes, na verdade, removem muita sobrecarga de driver, tornando tudo sem vínculos (por exemplo, ARB_direct_state_access(4.5 core) ,, ARB_bindless_texture...).
  • Com o mapeamento persistente ( ARB_buffer_storage, núcleo em 4.4), a memória do buffer pode ser acessada diretamente pela CPU, portanto, a sincronização com a GPU também é explícita, assim como o Vulkan.
  • Extensões futuras como NV_command_list(veja a apresentação Siggraph Asia 2014 de Tristan Lorach ) provavelmente fornecerão ao OpenGL o mesmo "paradigma de alimentação de GPU" que Vulkan.
Alex
fonte
11
Esta não é realmente uma resposta para a pergunta por si só.
Michaelhouse
1

A Khronos anunciou recentemente o lançamento da nova API Vulkan, que complementará (e em alguns casos substituirá) o OpenGL e o OpenGL ES. O Vulkan é uma API de baixo custo, projetada para aproximar o código do metal, aumentando o desempenho e a eficiência. É baseado na API Mantle da AMD, e a especificação final é esperada ainda este ano.

Neste post - Uma breve visão geral da API do Vulkan - o editor técnico da Toptal, Nermin Hajdarbegovic, explica por que o Vulkan pode ser um grande negócio a longo prazo. Pode demorar um pouco, mas essa API de plataforma cruzada pode melhorar drasticamente o desempenho 3D em determinados dispositivos, especialmente nos processadores de aplicativos com vários núcleos usados ​​em bilhões de smartphones e tablets.

Dmitry Pavlov
fonte
2
"A Khronos anunciou recentemente o lançamento da nova API Vulkan" Hum, não a partir de 18 de agosto. Não foi "liberado" por nenhuma definição desse termo. Agora é 8 de dezembro e ainda não foi lançado.
Nicol Bolas
2
@NicolBolas - Tem agora. Foi lançada hoje: khronos.org/vulkan
beatgammit 16/02