Texturas de armazenamento somente leitura e leitura/gravação
O tipo de vinculação de textura de armazenamento permite que os sombreadores leiam texturas de armazenamento sem adicionar o uso TEXTURE_BINDING e realizem leituras e gravações mistas em determinados formatos. Quando a extensão de linguagem WGSL "readonly_and_readwrite_storage_textures" está presente em navigator.gpu.wgslLanguageFeatures, agora é possível definir o acesso GPUStorageTexture como "read-write" ou "read-only" ao criar um layout de grupo de vinculação. Antes, isso era restrito a "write-only".
Em seguida, o código do sombreador WGSL pode usar read_write e read qualificador de acesso para texturas de armazenamento. As funções integradas textureLoad() e textureStore() se comportam de acordo, e uma nova função integrada textureBarrier() está disponível para sincronizar acessos à memória de textura em um grupo de trabalho.
Recomendamos usar uma diretiva requires para sinalizar o potencial de não portabilidade com requires readonly_and_readwrite_storage_textures; na parte de cima do código do sombreador WGSL. Consulte o exemplo a seguir e o problema dawn:1972.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
Suporte a service workers e shared workers
O WebGPU no Chrome leva o suporte a web workers para o próximo nível, oferecendo suporte a service workers e shared workers. É possível usar service workers para melhorar as tarefas em segundo plano e os recursos off-line, e shared workers para o compartilhamento eficiente de recursos em scripts. Consulte o problema chromium:41494731.
Confira o exemplo de extensão do Chrome e a extensão do Chrome WebLLM para saber como usar o WebGPU em um service worker de extensão.
Novos atributos de informações do adaptador
Os atributos de informações do adaptador d3dShaderModel e vkDriverVersion não padrão agora estão disponíveis ao chamar requestAdapterInfo() se o usuário tiver ativado a flag "Recursos para desenvolvedores do WebGPU" em chrome://flags/#enable-webgpu-developer-features. Quando compatível:
O
d3dShaderModelé o número máximo do modelo de sombreador D3D compatível. Por exemplo, o valor 62 indica que o driver atual oferece suporte ao HLSL SM 6.2. Consulte a documentação e o problema dawn:1254.O
vkDriverVersioné o número da versão do driver Vulkan especificado pelo fornecedor. Consulte a documentação e o problema chromium:327457605.
vkDriverVersion mostradas em https://webgpureport.org.Correções de bugs
A criação de dois pipelines com bindgroups correspondentes usando layout: "auto", a criação de um bindgroup com o primeiro pipeline e o uso dele no segundo pipeline agora gera um GPUValidationError. Permitir isso era um bug de implementação que agora foi corrigido com testes adequados. Consulte o problema dawn:2402.
Atualizações do Dawn
Na API Dawn, o callback de erro não capturado definido com wgpuDeviceSetUncapturedErrorCallback agora não é chamado depois que o dispositivo da GPU é perdido. Essa correção alinha o Dawn com a especificação da API JavaScript e a implementação do Blink. Consulte o problema dawn:2459.
Isso abrange apenas alguns dos principais destaques. Confira a lista exaustiva de commits.
Novidades no WebGPU
Uma lista de tudo o que foi abordado na série Novidades no WebGPU.
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 do WGSL
- Atualizações do Dawn
Chrome 145
- Extensão subgroup_uniformity do WGSL
- Mapeamento de buffer síncrono experimental em workers
- Atualizações do Dawn
Chrome 144
- Extensão subgroup_id do WGSL
- Extensão uniform_buffer_standard_layout do WGSL
- WebGPU no Linux
- writeBuffer e writeTexture mais rápidos
- Atualizações do Dawn
Chrome 143
- Swizzle de componentes 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
- As solicitações de dispositivos consomem o adaptador
- Atalho para usar a textura em que a visualização de textura é usada
- O WGSL textureSampleLevel oferece suporte a 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 do WebGPU
- Atualizações do Dawn
Chrome 138
- Atalho 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 copiados sem especificar deslocamentos e tamanho
- WGSL workgroupUniformLoad usando ponteiro para atômico
- Atributo powerPreference do GPUAdapterInfo
- Remover o atributo compatibilityMode do GPURequestAdapterOptions
- Atualizações do Dawn
Chrome 136
- Atributo isFallbackAdapter do GPUAdapterInfo
- Melhorias no tempo de compilação do sombreador no D3D12
- Salvar e copiar imagens de tela
- Remover restrições do modo de compatibilidade
- Atualizações do Dawn
Chrome 135
- Permitir a criação de layout de pipeline com layout de grupo de vinculação nulo
- Permitir que as janelas de visualização 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 aprendizado de máquina com subgrupos
- Remover o suporte a tipos de textura filtráveis de ponto flutuante como mescláveis
- Atualizações do Dawn
Chrome 133
- Formatos de vértice unorm8x4-bgra e de um componente adicionais
- Permitir que limites desconhecidos sejam solicitados com valor indefinido
- Mudanças nas regras de alinhamento do WGSL
- Ganhos de performance do 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 subgrupos
- Descontinuar o limite maxInterStageShaderComponents
- Atualizações do Dawn
Chrome 132
- Uso da visualização de textura
- Mesclagem de texturas de ponto flutuante de 32 bits
- Atributo adapterInfo do GPUDevice
- Configurar o contexto da tela com formato inválido gera erro de JavaScript
- Restrições de filtro de amostrador em texturas
- Experimentação estendida de subgrupos
- 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 recorte no 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 indireto
- Opção de compilação de módulo de sombreador matemática estrita
- Remover GPUAdapter requestAdapterInfo()
- Atualizações do Dawn
Chrome 130
- Mesclagem de origem dupla
- Melhorias no tempo de compilação do sombreador no Metal
- Descontinuação de GPUAdapter requestAdapterInfo()
- Atualizações do Dawn
Chrome 129
- Suporte a HDR com modo de mapeamento de tons de tela
- Suporte expandido a subgrupos
- Atualizações do Dawn
Chrome 128
- Como testar subgrupos
- Descontinuar a definição de viés de profundidade para linhas e pontos
- Ocultar o aviso de erro não capturado do DevTools se preventDefault
- WGSL interpola a amostragem primeiro e depois
- Atualizações do Dawn
Chrome 127
- Suporte experimental para OpenGL ES no Android
- Atributo de informações do GPUAdapter
- Melhorias na interoperabilidade do WebAssembly
- Erros de codificador de comandos aprimorados
- Atualizações do Dawn
Chrome 126
- Aumentar o limite maxTextureArrayLayers
- Otimização do upload de buffer para o back-end do 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 shared workers
- Novos atributos de informações do adaptador
- Correções de bugs
- Atualizações do Dawn
Chrome 123
- Suporte a funções integradas DP4a no WGSL
- Parâmetros de ponteiro irrestritos no WGSL
- Açúcar sintático para desreferenciar composições no WGSL
- Estado somente leitura separado para aspectos de estêncil e profundidade
- Atualizações do Dawn
Chrome 122
- Amplie o alcance com o modo de compatibilidade (recurso em desenvolvimento)
- Aumentar o limite maxVertexAttributes
- Atualizações do Dawn
Chrome 121
- Suporte ao WebGPU no Android
- Usar o DXC em vez do 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 cor GPUExternalTexture
- Informações sobre heaps de memória
- Atualizações do Dawn
Chrome 120
- Suporte a valores de ponto flutuante de 16 bits no WGSL
- Ultrapassar os limites
- Mudanças no estado de profundidade-estêncil
- Atualizações de informações do adaptador
- Quantização de consultas de carimbo de data/hora
- Recursos de limpeza de primavera
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
- Desdefinir buffer de vértice
- Desdefinir grupo de vinculação
- Erros de silêncio da criação de pipeline assíncrono quando o dispositivo é perdido
- Atualizações de criação de módulo de sombreador SPIR-V
- Melhorar a experiência do desenvolvedor
- Pipelines de armazenamento em 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 suave se
importExternalTexture()for chamado - Conformidade com a especificação
- Melhorar a experiência do desenvolvedor
- Atualizações do Dawn
Chrome 115
- Extensões de linguagem WGSL com suporte
- Suporte experimental para Direct3D 11
- Receber GPU discreta por padrão na alimentação CA
- Melhorar a experiência do desenvolvedor
- Atualizações do Dawn
Chrome 114
- Otimizar o JavaScript
- getCurrentTexture() em tela não configurada gera InvalidStateError
- Atualizações do WGSL
- Atualizações do Dawn