Após anos de desenvolvimento, a equipe do Chrome anuncia que a primeira versão da WebGPU agora está disponível por padrão no Chrome para ChromeOS, macOS e Windows. Confira O Chrome envia a WebGPU para saber mais.
Também começamos a adicionar uma documentação abrangente para a WebGPU no MDN.
E tem mais.
Usar a origem VideoFrame
do WebCodecs em importExternalTexture()
A WebGPU expõe uma API para criar objetos de "textura externa" opacos de HTMLVideoElement
a importExternalTexture()
. Você pode usar esses objetos para extrair uma amostra dos quadros do vídeo de maneira eficiente, possivelmente de maneira não conversível, diretamente dos dados YUV de origem.
No entanto, a especificação inicial da WebGPU não permite a criação de objetos GPUExternalTexture
a partir de objetos VideoFrame
do WebCodecs. Esse recurso é importante para aplicativos avançados de processamento de vídeo que já usam o WebCodecs e gostariam de integrar a WebGPU ao pipeline de processamento de vídeo. No momento, a discussão está acontecendo no problema gpuweb/gpuweb#1380.
Ativar o recurso
Por padrão, esse recurso não está ativado no Chrome, mas pode ser testado no Chrome 113, basta ativar explicitamente a funcionalidade. É possível ativá-la localmente ativando a sinalização "Recursos do desenvolvedor da WebGPU" em chrome://flags/#enable-webgpu-developer-features
.
O teste de origem está sendo ativado para todos os visitantes do app e vai terminar no Chrome 118 (8 de dezembro de 2023). Para participar do teste, inscreva-se e inclua um elemento meta com o token do teste de origem no cabeçalho HTML ou HTTP. Para saber mais, consulte a postagem Introdução aos testes de origem.
Exemplo de código
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Confira o exemplo experimental Upload de vídeo com o WebCodecs para brincar.
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