Publicado em: 15 de setembro de 2026
Extensão buffer_view do WGSL
A extensão de linguagem WGSL buffer_view permite que os dados de uma variável uniforme, de armazenamento ou de grupo de trabalho sejam interpretados como vários tipos diferentes. Isso tem uma ampla gama de utilidades, desde usos convencionais de type-punning até a partição de uma variável em várias variáveis lógicas.
Para segurança e simplicidade de implementação, os tipos reinterpretados só podem ser acessados usando as seguintes funções integradas:
bufferView<T>()interpreta a memória em um determinado deslocamento de bytes como um ponteiro para o tipo T.bufferArrayView<T>()cria um ponteiro de matriz limitada com uma contagem de elementos explícita.bufferLength()retorna o tamanho em bytes do buffer.
Essa extensão de linguagem pode ser detectada por recursos em JavaScript usando navigator.gpu.wgslLanguageFeatures. Recomendamos usar uma diretiva "requires" para sinalizar o potencial de não portabilidade com requires buffer_view na parte de cima do código do shader WGSL. Confira o exemplo de WGSL a seguir e a intenção de envio.
requires buffer_view;
// +-------------------+-----------------------------+----------------------------+
// | Byte 0 .. 3 | Byte 4 .. (4 + N - 1) | Byte (4 + N) .. End |
// +-------------------+-----------------------------+----------------------------+
// | indices_size (u32)| indices (array<u32, count>) | vertices (array<f32>) |
// +-------------------+-----------------------------+----------------------------+
@group(0) @binding(0) var<storage> indices_and_vertices : buffer;
fn unpack_and_process_geometry() {
let indices_size = *bufferView<u32>(&indices_and_vertices, 0);
let indices = bufferArrayView<array<u32>>(&indices_and_vertices, 4, indices_size);
let vertices = bufferView<array<f32>>(&indices_and_vertices, indices_size + 4);
...
}
Você também pode conferir a proposta de visualização de buffer para mais detalhes e testar o exemplo do Wireframe WebGPU.
Extensão swizzle_assignment do WGSL
Em resposta a um dos recursos da comunidade mais solicitados, a extensão WGSL swizzle_assignment permite gravar diretamente em swizzles de vetor, possibilitando atualizar vários componentes em uma única instrução. Ele reduz drasticamente o boilerplate e melhora a legibilidade do shader, ao mesmo tempo em que alinha o WGSL a outras linguagens de sombreamento.
Essa extensão de linguagem pode ser detectada por recursos em JavaScript usando navigator.gpu.wgslLanguageFeatures. Recomendamos usar uma diretiva "requires" para sinalizar o potencial de não portabilidade com requires swizzle_assignment na parte de cima do código do shader WGSL. Confira o exemplo de WGSL a seguir e a intenção de envio.
if (!navigator.gpu.wgslLanguageFeatures.has("swizzle_assignment")) {
throw new Error(`WGSL swizzle assignment is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires swizzle_assignment;
@vertex
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
var position = vec4f(0.0, 0.0, 0.0, 1.0);
position.xy = vec2f(10.0, 20.0); // Swizzle assignment
return position;
}`,
});
Atualizações de extensão do WGSL
A extensão de linguagem texture-formats-tier1, embora seja compatível com o código WGSL, não era mapeada corretamente para navigator.gpu.wgslLanguageFeatures (como texture_formats_tier1) em JavaScript. Esse problema de mapeamento já foi resolvido. Consulte Chromium CL 8159562.
A extensão de linguagem subgroups agora é ativada automaticamente quando subgroup_size_control está ativado em WGSL. Consulte o problema dawn:545285663.
Atualizações do amanhecer
O novo recurso experimental wgpu::FeatureName::BufferMapWriteExtendedUsages
permite criar um buffer com wgpu::BufferUsage::MapWrite combinado com qualquer
outro wgpu::BufferUsage, exceto wgpu::BufferUsage::MapRead, para gravar
diretamente em um buffer mapeável que também pode ser usado pela GPU, eliminando o
buffer de estágio e a cópia extra nos back-ends Vulkan e D3D12. Para mais
informações, consulte Buffer Map Write Extended
Usages
e o problema dawn:386255678.
Agora você pode usar as vinculações webgpu_cpp.h em qualquer implementação webgpu.h em vez de ficar vinculado ao sabor do Dawn usando o novo webgpu_upstream_cpp_headers. Consulte o problema #596 do webgpu-headers.
Agora, o Dawn requer o macOS 13.0 ou versões mais recentes. Consulte Dawn CL 334415.
Isso abrange apenas alguns dos principais destaques. Confira a lista completa de commits para mais detalhes.
Novidades no WebGPU
Uma lista de tudo o que foi abordado na série O que há de novo no WebGPU.
Chrome 153-154
- Extensão buffer_view da WGSL
- Extensão swizzle_assignment da WGSL
- Atualizações da extensão WGSL
- Atualizações do Dawn
Chrome 151-152
- Controle do tamanho do subgrupo
- OperationError para falhas de validação de setImmediates
- Atualizações do Dawn
Chrome 149-150
Chrome 147-148
Chrome 146
- Suporte ao modo de compatibilidade do WebGPU no OpenGL ES 3.1
- Anexos temporários
- Extensão texture_and_sampler_let da WGSL
- Atualizações do Dawn
Chrome 145
- Extensão subgroup_uniformity da WGSL
- Mapeamento de buffer síncrono experimental em workers
- Atualizações do Dawn
Chrome 144
- Extensão subgroup_id da WGSL
- Extensão uniform_buffer_standard_layout da WGSL
- WebGPU no Linux
- writeBuffer e writeTexture mais rápidos
- Atualizações do Dawn
Chrome 143
- Swizzle de componente de textura
- Remover o uso de textura de armazenamento somente leitura bgra8unorm
- Atualizações do Dawn
Chrome 142
Chrome 141
- Tint IR concluído
- Análise de intervalo de números inteiros no compilador WGSL
- Atualização do SPIR-V 1.4 para o back-end do Vulkan
- Atualizações do Dawn
Chrome 140
- Solicitações de dispositivo consomem o adaptador
- Abreviação para usar textura onde a visualização de textura é usada
- O WGSL textureSampleLevel é compatível com texturas 1D
- Descontinuar o uso de textura de armazenamento somente leitura bgra8unorm
- Remover o atributo isFallbackAdapter do GPUAdapter
- Atualizações do Dawn
Chrome 139
- Suporte a texturas 3D para formatos compactados BC e ASTC
- Novo recurso "core-features-and-limits"
- Teste de origem para o modo de compatibilidade da WebGPU
- Atualizações do Dawn
Chrome 138
- Abreviação para usar o buffer como um recurso de vinculação
- Mudanças nos requisitos de tamanho para buffers mapeados na criação
- Relatório de arquitetura para GPUs recentes
- Descontinuar o atributo isFallbackAdapter do GPUAdapter
- Atualizações do Dawn
Chrome 137
- Usar a visualização de textura para vinculação externalTexture
- Buffers são copiados sem especificar offsets e tamanho
- WGSL workgroupUniformLoad usando ponteiro para atômico
- Atributo powerPreference do GPUAdapterInfo
- Remover o atributo compatibilityMode de GPURequestAdapterOptions
- Atualizações do Dawn
Chrome 136
- Atributo isFallbackAdapter do GPUAdapterInfo
- Melhorias no tempo de compilação de sombreador no D3D12
- Salvar e copiar imagens da tela
- Restrições do modo de compatibilidade do Lift
- Atualizações do Dawn
Chrome 135
- Permitir a criação de um layout de pipeline com um layout de grupo de vinculação nulo
- Permitir que viewports se estendam além dos limites dos destinos de renderização
- Acesso mais fácil ao modo de compatibilidade experimental no Android
- Remover o limite maxInterStageShaderComponents
- Atualizações do Dawn
Chrome 134
- Melhorar as cargas de trabalho de machine learning com subgrupos
- Remover o suporte a tipos de textura filtráveis de ponto flutuante como combináveis
- Atualizações do Dawn
Chrome 133
- Outros formatos de vértice unorm8x4-bgra e de um componente
- Permitir que limites desconhecidos sejam solicitados com valor indefinido
- Mudanças nas regras de alinhamento da WGSL
- Melhorias de performance da WGSL com descarte
- Usar displaySize do VideoFrame para texturas externas
- Processar imagens com orientações não padrão usando copyExternalImageToTexture
- Melhorar a experiência do desenvolvedor
- Ativar o modo de compatibilidade com featureLevel
- Limpeza de recursos experimentais de subgrupo
- Descontinuar o limite maxInterStageShaderComponents
- Atualizações do Dawn
Chrome 132
- Uso da visualização de textura
- Fusão de texturas de ponto flutuante de 32 bits
- Atributo adapterInfo do GPUDevice
- Configurar o contexto da tela com formato inválido gera um erro de JavaScript
- Restrições de filtragem do sampler em texturas
- Experimentos com subgrupos estendidos
- Melhorar a experiência do desenvolvedor
- Suporte experimental para formatos de textura normalizados de 16 bits
- Atualizações do Dawn
Chrome 131
- Distâncias de corte na WGSL
- GPUCanvasContext getConfiguration()
- Primitivos de ponto e linha não podem ter viés de profundidade
- Funções integradas de verificação inclusiva para subgrupos
- Suporte experimental para multi-draw indirect
- Opção de compilação do módulo de sombreador strict math
- Remover requestAdapterInfo() do GPUAdapter
- Atualizações do Dawn
Chrome 130
- Combinação de duas fontes
- Melhorias no tempo de compilação de sombreadores no Metal
- Descontinuação do requestAdapterInfo() do GPUAdapter
- Atualizações do Dawn
Chrome 129
- Suporte a HDR com modo de mapeamento de tons do Canvas
- Suporte a subgrupos expandido
- Atualizações do Dawn
Chrome 128
- Testes com subgrupos
- Descontinuar a definição de bias de profundidade para linhas e pontos
- Ocultar aviso do DevTools de erro não capturado se preventDefault
- A WGSL faz a amostragem de interpolação primeiro e
- Atualizações do Dawn
Chrome 127
- Suporte experimental para OpenGL ES no Android
- Atributo de informações do GPUAdapter
- Melhorias na interoperabilidade do WebAssembly
- Melhoria nos erros do codificador de comandos
- Atualizações do Dawn
Chrome 126
- Aumentar o limite maxTextureArrayLayers
- Otimização do upload de buffer para back-end Vulkan
- Melhorias no tempo de compilação do sombreador
- Os buffers de comando enviados precisam ser exclusivos
- Atualizações do Dawn
Chrome 125
Chrome 124
- Texturas de armazenamento somente leitura e leitura/gravação
- Suporte a service workers e trabalhadores compartilhados
- Novos atributos de informações do adaptador
- Correções de bugs
- Atualizações do Dawn
Chrome 123
- Suporte a funções integradas DP4a em WGSL
- Parâmetros de ponteiro irrestritos na WGSL
- Açúcar sintático para desreferenciar composições em WGSL
- Estado somente leitura separado para aspectos de estêncil e profundidade
- Atualizações do Dawn
Chrome 122
- Ampliar o alcance com o modo de compatibilidade (recurso em desenvolvimento)
- Aumentar o limite de maxVertexAttributes
- Atualizações do Dawn
Chrome 121
- Suporte à WebGPU no Android
- Usar DXC em vez de FXC para compilação de shader no Windows
- Consultas de carimbo de data/hora em transmissões de computação e renderização
- Pontos de entrada padrão para módulos de shader
- Suporte a display-p3 como espaço de cores GPUExternalTexture
- Informações sobre heaps de memória
- Atualizações do Dawn
Chrome 120
- Suporte a valores de ponto flutuante de 16 bits na WGSL
- Ultrapassar os limites
- Mudanças no estado de estêncil de profundidade
- Atualizações de informações do adaptador
- Quantização de consultas de carimbo de data/hora
- Recursos de faxina geral
Chrome 119
- Texturas de ponto flutuante de 32 bits filtráveis
- Formato de vértice unorm10-10-10-2
- Formato de textura rgb10a2uint
- Atualizações do Dawn
Chrome 118
- Suporte a HTMLImageElement e ImageData em
copyExternalImageToTexture() - Suporte experimental para textura de armazenamento de leitura/gravação e somente leitura
- Atualizações do Dawn
Chrome 117
- Remover buffer de vértice
- Remover a vinculação do grupo
- Silenciar erros da criação de pipeline assíncrono quando o dispositivo é perdido
- Atualizações na criação de módulos de sombreador SPIR-V
- Melhorar a experiência do desenvolvedor
- Pipelines de cache com layout gerado automaticamente
- Atualizações do Dawn
Chrome 116
- Integração do WebCodecs
- Dispositivo perdido retornado por GPUAdapter
requestDevice() - Manter a reprodução de vídeo fluida se
importExternalTexture()for chamado - Conformidade com as especificações
- Melhorar a experiência do desenvolvedor
- Atualizações do Dawn
Chrome 115
- Extensões de linguagem WGSL compatíveis
- Suporte experimental para Direct3D 11
- Usar GPU discreta por padrão com alimentação CA
- Melhorar a experiência do desenvolvedor
- Atualizações do Dawn
Chrome 114
- JavaScript do Optimize
- getCurrentTexture() em tela não configurada gera InvalidStateError
- Atualizações da WGSL
- Atualizações do Dawn