O número de recursos da WebGPU pode parecer um pouco leve desta vez, mas grandes avanços estão a caminho. As próximas versões vão incluir recursos como DP4a, texturas de armazenamento somente leitura e leitura/gravação, controle de aspecto de profundidade e estêncil separado, renderização de fatias de textura 3D e melhorias na compilação de sombreador.
Enquanto isso, saiba como melhorar o teste do modelo de IA da Web com suporte para WebGPU e WebGL no Headless Chrome e por que a WebGPU pode estar desativada ou não funcionando no Chrome.
Expandir o alcance com o modo de compatibilidade (recurso em desenvolvimento)
A WebGPU se alinha bem com APIs gráficas modernas (Vulkan, Metal e D3D12), mas alguns dispositivos não oferecem suporte a elas. Isso limita a acessibilidade da WebGPU, especialmente em plataformas como Windows (31% dos usuários do Chrome não utilizam o D3D11.1+), Android (23% não têm o Vulkan 1.1+) e ChromeOS (adoção da Vulkan em ascensão).
A equipe do Chrome está trabalhando em um modo de compatibilidade na WebGPU para resolver isso oferecendo uma versão ligeiramente restrita da WebGPU que funciona em APIs mais antigas, como D3D11 e OpenGL ES. Isso vai expandir a base de usuários em potencial da WebGPU.
É importante ressaltar que os aplicativos que usam o modo de compatibilidade continuam sendo aplicativos WebGPU totalmente válidos. Dispositivos sem suporte ao modo de compatibilidade vão seguir o padrão do adaptador principal da WebGPU, garantindo ampla usabilidade.
Confira a proposta e comente se tiver dúvidas.
Aumentar o limite maxVertexAttributes
O número máximo de atributos no total nos buffers ao criar um GPURenderPipeline é 16 por padrão. Agora é possível solicitar até 30 usando o limite maxVertexAttributes, quando compatível. Confira o exemplo a seguir e o issue dawn:2223.
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxVertexAttributes < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxVertexAttributes: 30 },
});
Atualizações ao amanhecer
Um novo alternância de instância chamado "presentation_wgsl_experimental_features" foi adicionado para expor apenas os recursos experimentais da WGSL, mas não os inseguros. Assim, os recursos experimentais e seguros da WGSL podem ser usados sem a necessidade de ativar o botão de alternância "allow_unsafe_apis". Consulte problema dawn:2260.
As melhorias recentes nas vinculações do Dawn para Node.js incluem o seguinte:
GPUSupportedFeatures::getSize()
foi adicionado.- A inatividade
GPUAdapter
foi implementada. GPUInternalError
agora é informado corretamente para dispositivos.- Os atributos agora são enumeráveis.
Esses são apenas alguns dos principais destaques. Confira a lista completa de confirmações (link em inglês).
Novidades da WebGPU
Uma lista de tudo o que foi abordado na série O que há de novo na WebGPU.
Chrome 125
Chrome 124
- Texturas de armazenamento somente leitura e leitura/gravação
- Suporte para service workers e workers compartilhados
- Novos atributos de informações do adaptador
- Correções de bugs
- Atualizações do amanhecer
Chrome 123
- Suporte para funções integradas do DP4a na WGSL
- Parâmetros de ponteiro irrestrito na WGSL
- Simplificação da sintaxe para desreferenciar compostos na WGSL
- Separar o estado somente leitura para aspectos de estêncil e profundidade
- Atualizações do amanhecer
Chrome 122
- Expandir o alcance com o modo de compatibilidade (recurso em desenvolvimento)
- Aumentar o limite maxVertexAttributes
- Atualizações do amanhecer
Chrome 121
- Suporte para WebGPU no Android
- Usar DXC em vez de FXC para compilação de sombreador no Windows
- Consultas de carimbo de data/hora em passagens de computação e renderização
- Pontos de entrada padrão para módulos de sombreador
- Suporte a display-p3 como espaço de cores GPUExternalTexture
- Informações sobre heaps de memória
- Atualizações do amanhecer
Google Chrome 120
- Suporte para valores de ponto flutuante de 16 bits na WGSL
- Supere os limites
- Mudanças no estado do estêncil de profundidade
- Atualizações de informações sobre os adaptadores
- Quantização de consultas de carimbo de data/hora
- Recursos para limpeza de primavera
Chrome 119
- Texturas flutuantes de 32 bits filtráveis
- Formato de vértice unorm10-10-10-2
- Formato de textura rgb10a2uint
- Atualizações do amanhecer
Chrome 118
- Suporte para HTMLImageElement e ImageData no
copyExternalImageToTexture()
- Suporte experimental para textura de leitura/gravação e armazenamento somente leitura
- Atualizações do amanhecer
Chrome 117
- Buffer de vértice não definido
- Grupo de vinculação não definido
- Silenciar erros da criação de pipeline assíncrono quando o dispositivo é perdido
- Atualizações na criação do módulo de sombreador SPIR-V
- Melhorias na experiência do desenvolvedor
- Pipelines de armazenamento em cache com layout gerado automaticamente
- Atualizações do amanhecer
Chrome 116
- Integração do WebCodecs
- Dispositivo perdido retornado pelo GPUAdapter
requestDevice()
- Manter a reprodução do vídeo suave se
importExternalTexture()
for chamado - Conformidade com especificações
- Melhorias na experiência do desenvolvedor
- Atualizações do amanhecer
Chrome 115
- Extensões de idioma da WGSL compatíveis
- Suporte experimental para Direct3D 11
- Receber GPU discreta por padrão com alimentação CA
- Melhorias na experiência do desenvolvedor
- Atualizações do amanhecer
Chrome 114
- Optimize JavaScript
- getCurrentTexture() na tela não configurada gera InvalidStateError.
- Atualizações da WGSL
- Atualizações do amanhecer