Texture di archiviazione di sola lettura e lettura-scrittura
Il tipo di associazione delle texture di archiviazione consente agli utenti di leggere le texture di archiviazione senza aggiungere l'utilizzo di TEXTURE_BINDING
e di eseguire letture e scritture miste su determinati formati. Quando l'estensione per la lingua WGSL "readonly_and_readwrite_storage_textures"
è presente in navigator.gpu.wgslLanguageFeatures
, ora puoi impostare l'accesso GPUStorageTexture
su "read-write"
o "read-only"
quando crei un layout di gruppi di associazione. In precedenza, questa funzionalità era limitata a "write-only"
.
Quindi, il codice Shader WGSL può utilizzare il qualificatore di accesso read_write
e read
per le texture di archiviazione, le funzioni integrate textureLoad()
e textureStore()
si comportano di conseguenza ed è disponibile una nuova funzione integrata textureBarrier()
per sincronizzare gli accessi alla memoria delle texture in un gruppo di lavoro.
Ti consigliamo di utilizzare un'istruzione richiede-indica per segnalare il potenziale di non portabilità con requires readonly_and_readwrite_storage_textures;
nella parte superiore del codice dello strumento di Shader WGSL. Vedi l'esempio seguente e il messaggio issue 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.
Assistenza per Service worker e worker condivisi
Con WebGPU in Chrome, l'assistenza dei web worker a un livello superiore, ora è possibile supportarla sia per i service worker che per i worker condivisi. Puoi utilizzare i service worker per migliorare le attività in background e le funzionalità offline, nonché i worker condivisi per una condivisione efficiente delle risorse tra gli script. Vedi issue chromium:41494731.
Guarda l'esempio di estensione di Chrome e l'estensione di Chrome WebLLM per scoprire come utilizzare WebGPU in un service worker di estensione.
Nuovi attributi delle informazioni sull'adattatore
Gli attributi delle informazioni sull'adattatore d3dShaderModel
e vkDriverVersion
non standard sono ora disponibili al momento della chiamata a requestAdapterInfo()
se l'utente ha attivato il flag "Funzionalità per sviluppatori WebGPU" alle ore chrome://flags/#enable-webgpu-developer-features
. Se supportato:
d3dShaderModel
è il numero di modello massimo supportato per lo ShaD D3D. Ad esempio, il valore 62 indica che il driver corrente supporta HLSL SM 6.2. Consulta la documentazione e l'issue dawn:1254.vkDriverVersion
è il numero di versione specificato dal fornitore del driver Vulkan. Consulta la documentazione e il issue chromium:327457605.
Correzioni di bug
La creazione di due pipeline con bindgroup corrispondenti utilizzando layout: "auto"
, la creazione di un bindgroup con la prima pipeline e il suo utilizzo nella seconda pipeline ora genera un GPUValidationError. A quel punto era un bug di implementazione che ora è stato risolto con test adeguati. Vedi issue dawn:2402.
Aggiornamenti da Dawn
Nell'API Dawn, il callback di errore non acquisito impostato con wgpuDeviceSetUncapturedErrorCallback
non viene ora chiamato dopo la perdita del dispositivo GPU. Questa correzione allinea Dawn alla specifica dell'API JavaScript e all'implementazione di Blink. Vedi issue dawn:2459.
Vengono trattati solo alcuni dei punti salienti. Consulta l'elenco completo dei commit.
Novità di WebGPU
Un elenco di tutti gli argomenti trattati nella serie Novità di WebGPU.
Chrome 125
- Sottogruppi (funzionalità in fase di sviluppo)
- Eseguire il rendering su una fetta di texture 3D
- Aggiornamenti dell'alba
Chrome 124
- Texture di archiviazione di sola lettura e lettura/scrittura
- Assistenza per i Service worker e i worker condivisi
- Nuovi attributi delle informazioni sull'adattatore
- Correzioni di bug
- Aggiornamenti dell'alba
Chrome 123
- Supporto delle funzioni integrate DP4a in WGSL
- Parametri puntatore senza limitazioni in WGSL
- zucchero della sintassi per dereferenziare i compositi in WGSL
- Stato di sola lettura separato per aspetti stencil e di profondità
- Aggiornamenti dell'alba
Chrome 122
- Espandi la copertura con la modalità di compatibilità (funzionalità in fase di sviluppo)
- Aumenta il limite maxVertexAttributes
- Aggiornamenti dell'alba
Guida introduttiva di Chrome
- Supporto di WebGPU su Android
- Usare DXC anziché FXC per la compilazione dello Shader su Windows
- Query di timestamp nelle tessere di calcolo e rendering
- Punti di contatto predefiniti per i moduli Shadr
- Supporto display-p3 come spazio colore GPUExternalTexture
- Informazioni sui heap di memoria
- Aggiornamenti dell'alba
Chrome 120
- Supporto per valori in virgola mobile a 16 bit in WGSL
- Supera i limiti
- Modifiche allo stato dello stencil di profondità
- Aggiornamenti alle informazioni sull'alimentatore
- Quantizzazione delle query dei timestamp
- Funzionalità per le pulizie di primavera
Chrome 119
- Trame fluttuanti a 32 bit filtrabili
- formato unorm10-10-10-2 vertex
- Formato trama Memcache10a2uint
- Aggiornamenti dell'alba
Chrome 118
- Supporto di HTMLImageElement e ImageData in
copyExternalImageToTexture()
- Supporto sperimentale per la texture di archiviazione in lettura/scrittura e in sola lettura
- Aggiornamenti dell'alba
Chrome 117
- Impostazione del buffer del vertex non impostata
- Annulla impostazione gruppo di associazione
- Silenziare gli errori della creazione di pipeline asincrone in caso di perdita del dispositivo
- Aggiornamenti alla creazione del modulo shabby di SPIR-V
- Migliorare l'esperienza degli sviluppatori
- Memorizzazione nella cache delle pipeline con il layout generato automaticamente
- Aggiornamenti dell'alba
Chrome 116
- Integrazione di WebCodecs
- Dispositivo smarrito restituito da GPUAdapter
requestDevice()
- Mantieni la riproduzione video fluida se viene chiamato
importExternalTexture()
- Conformità alle specifiche
- Migliorare l'esperienza degli sviluppatori
- Aggiornamenti dell'alba
Versione 115 di Chrome
- Estensioni in lingua WGSL supportate
- Supporto sperimentale per Direct3D 11
- Ricevi una GPU discreta per impostazione predefinita tramite alimentazione CA
- Migliorare l'esperienza degli sviluppatori
- Aggiornamenti dell'alba
Chrome 114
- Ottimizzare JavaScript
- getCurrentTexture() su canvas non configurati genera InvalidStateError
- Aggiornamenti di WGSL
- Aggiornamenti dell'alba