Há muitos anos, quando as primeiras placas aceleradores de vídeo surgiram no mercado, as APIs gráficas 3D ainda estavam surgindo, para padronizar o acesso ao hardware destas GPUs. Dentre as primeiras que se destacaram nesta época, estão a Direct3D (Microsoft) e a OpenGL (Khronos Group), embora a MiniGL (um subconjunto das especificações da OpenGL) também tenha surgido apenas para atender as necessidades da 3dfx para dispor de uma API gráfica, para rodar os jogos 3D com um bom desempenho gráfico (posteriormente, se tornou a base da API Glide)…
“Today, The Khronos® Group, an open consortium of industry-leading companies creating advanced interoperability standards, announced the latest updates to Vulkan, the cross-platform 3D graphics API and its ecosystem. The Vulkan® 1.3 specification was released today, incorporating and mandating proven, developer-requested extensions to make that functionality consistently available across all supported platforms.”
— by The Khronos Group.
Porém, devido a complexidade da OpenGL e a forte presença da Microsoft no mercado de PCs para jogos, a Direct3D foi assumindo a liderança neste quesito, embora o OpenGL entregasse uma melhor performance gráfica, além de continuar sendo muito importante para o uso geral, por se tratar de um padrão aberto já bastante consolidado na indústria gráfica (suportado em praticamente todas as plataformas existentes). Mas no geral, ambas as APIs não tiravam total proveito dos recursos de hardware, devido ao acesso de alto nível e as abstrações de hardware, que por sua vez geravam mais overhead e afetavam o desempennho geral. Por isto, a AMD resolveu criar uma nova API para jogos 3D: eis, a Mantle!
A Mantle se destacava em relaçao a OpenGL e a Direct3D, por oferecer uma performance gráfica superior graças as otimizações feitas na API, para realizar o acesso de baixo nível aos recursos de hardware oferecidos pelas GPUs. No entanto, ela também possuía algumas desvantagens, como a pouca flexibilidade para lidar com diferentes arquiteturas de GPUs (algo que as APIs de alto nível fazem com certa facilidade) e por isto, a Mantle não obteve o sucesso desejado. Felizmente, todo o bom trabalho feito pela AMD não foi jogado fora: ela doou o projeto em questão para o Grupo Khronos, que por sua vez utilizou estes trabalhos para criar uma nova API de baixo nível: a Vulkan (2015)!
A API Vulkan não só teve uma boa recepção por parte da indústria em geral, como também vem evoluindo bem, ganhando até então três belas atualizações. A última delas (1.3) foi realizada ontem (25/jan), trazendo várias inovações solicitadas pela comunidade de desenvolvedores da API. Diferente das atualizações anteriores, os novos recursos adicionados são mandatórios (não opcionais) e deverão ser implementados para todas as plataformas suportadas, como objetivo de garantir uma maior consistência entre elas. Assim, teremos uma API principal bem mais consolidada, dotada de uma linha de base para as funcionalidades mais comuns, ao mesmo tempo em que ela provê suporte para o uso de extensões opcionais, para atender as necessidades específicas do hardware em uso.
Além disso, foi adicionado um novo mecanismo de perfil, o qual possibilita especificar e gerenciar de forma precisa, os conjuntos de recursos oferecidos pela API. O roadmap de 2022 recentemente publicado também representa um marco especial, já que todos os fornecedores de hardware que fazem parte do grupo (que não é de WhatsZap) deverão dar suporte para os requerimentos relacionados, sendo este a API Vulkan 1.3 e uma série de extensões consideradas essenciais para o mercado-alvo, incluindo “indexação de descritores, armazenamentos de sombreamento de fragmento e atomics, suporte de subgrupo em sombreadores de fragmento, mistura independente, sombreamento de amostra, filtragem anisotrópica, amostragem YCbCr, e layout de bloco escalar para recursos de buffer”.
Enquanto isso, o DirectX mal saiu da versão 12 (Ultimate)… &;-D