Extensões de idioma WGSL compatíveis
O membro wgslLanguageFeatures
do objeto GPU
lista os nomes das extensões de idioma da WGSL compatíveis. As extensões de idioma WGSL com suporte são ativadas automaticamente. Portanto, você não precisa solicitar uma explicitamente. Esta lista está vazia no momento, mas há muitas possibilidades no futuro (por exemplo, do-while loops
). Consulte amanhecer do problema:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Suporte experimental para Direct3D 11
A equipe do Chromium está trabalhando para adicionar suporte à WebGPU ao Direct3D 11. Agora você pode testar esse recurso localmente executando o Chrome no Windows com as sinalizações de linha de comando --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
. Consulte problema dawn:1705.
Tenha uma GPU discreta por padrão com alimentação CA
Em dispositivos macOS com GPU dupla, se requestAdapter()
for chamado sem a opção powerPreference
, a GPU discreta será retornada quando o dispositivo do usuário estiver usando energia CA. Caso contrário, a GPU integrada será retornada. Consulte a mudança 4499307.
Aprimoramento da experiência do desenvolvedor
Novos avisos do DevTools
Se a chave depth
for usada em um GPUExtend3DDict
, um aviso será exibido no Console do DevTools, porque a chave correta é depthOrArrayLayers
. Consulte o problema chromium:1440900.
Um aviso também será gerado se um GPUBlendComponent
tiver uma combinação de membros explícitos e padronizados. Consulte problema dawn:1785.
Embora os envios e desenhos de tamanho zero sejam válidos, um aviso incentiva os desenvolvedores a evitá-los sempre que possível. Consulte problema dawn:1786.
Mensagens de erro melhores
Uma mensagem de erro aprimorada agora é fornecida ao usar um GPUCommandEncoder
se finish()
já tiver sido chamado Consulte Problema dawn:1736.
Ao enviar buffers de comando com objetos destruídos, os rótulos dos buffers de comando que foram usados no submit()
agora ficam visíveis na mensagem de erro. Consulte problema dawn:1747.
A parte inválida do estado do estêncil de profundidade agora é especificada na mensagem de erro ao validar depthStencil
Consulte Problema dawn:1735.
A mensagem de erro de validação minBindingSize
agora informa o grupo e o número da vinculação que apresentou falha na validação, além do buffer. Consulte Problema dawn:1604.
As mensagens de erro retornadas pelo método mapAsync()
em um objeto GPUBuffer
foram aprimoradas para ajudar os desenvolvedores durante a depuração. Veja um exemplo abaixo e problema chromium:1431622.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
Rótulos em ferramentas de depuração do macOS
A alternância de depuração use_user_defined_labels_in_backend
permite que você encaminhe rótulos de objeto ao back-end para que eles possam ser vistos em ferramentas de depuração específicas da plataforma, como RenderDoc, PIX ou Instruments. A partir de agora, a depuração vai proporcionar uma experiência de depuração melhor no macOS. Consulte o problema amanhecer:1784.
Registrar HLSL se a compilação falhar
A alternância de depuração dump_shaders
permite registrar sombreadores WGSL de entrada e sombreadores de back-end traduzidos. A partir de agora, quando você ativar a depuração, o HLSL será descartado se a compilação falhar. Consulte Problema amanhecer:1681
Atualizações ao amanhecer
Buffer de vértice não definido
Transmitir nullptr
em vez de wgpu::Buffer
para SetVertexBuffer()
em wgpu::RenderPassEncoder
ou wgpu::RenderBundleEncoder
permite desativar um buffer de vértice definido anteriormente em um determinado slot. Consulte problema dawn:1675.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Anexos temporários
É possível criar anexos que permitem que as operações de passagem de renderização permaneçam na memória do bloco, evitando o tráfego de VRAM e possivelmente a alocação de VRAM para as texturas, definindo o uso de wgpu::TextureUsage::TransientAttachment
. Esse recurso tem suporte apenas para Metal e Vulkan. Consulte o início do problema: 1695.
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
Criando sem depot_tools
Uma nova opção DAWN_FETCH_DEPENDENCIES
do CMake permite buscar dependências do Dawn usando um script Python que lê arquivos DEPS em vez de exigir a instalação do depot_tools
por todos os projetos que dependem dele. Consulte a mudança 131750.
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