Integrazione di WebCodecs
WebGPU espone un'API per creare oggetti "trama esterna" opachi da HTMLVideoElement
a importExternalTexture()
. Puoi utilizzare questi oggetti per campionare i fotogrammi video in modo efficiente, potenzialmente con una copia senza costi direttamente dai dati del modello di colore YUV di origine.
Tuttavia, la specifica WebGPU iniziale non consentiva di creare oggetti GPUExternalTexture
da oggetti WebCodecs VideoFrame
. Questa funzionalità è importante per le app di elaborazione video avanzata che utilizzano già WebCodecs e che vorrebbero integrare WebGPU nella pipeline di elaborazione video. L'integrazione di WebCodecs aggiunge il supporto per l'utilizzo di VideoFrame
come origine per una chiamata GPUExternalTexture
e una copyExternalImageToTexture()
. Vedi l'esempio che segue e la voce chromestatus.
// 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);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Per giocare, guarda l'esempio sperimentale Caricamento di video con WebCodecs.
Dispositivo smarrito restituito da GPUAdapter requestDevice()
Se il metodo requestDevice()
su GPUAdapter
non funziona perché è già stato utilizzato per creare una GPUDevice
, ora soddisfa con un GPUDevice
immediatamente contrassegnato come smarrito, anziché restituire una promessa che viene rifiutata con null
. Vedi issue chromium:1234617.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
Mantieni la riproduzione video senza interruzioni se viene chiamato importExternalTexture()
Quando importExternalTexture()
viene chiamato con un HTMLVideoElement
, la riproduzione del video associato non viene più limitata quando il video non è visibile nell'area visibile. Vedi issue chromium:1425252.
Conformità alle specifiche
L'argomento message
nel costruttore GPUPipelineError()
è facoltativo. Visita la pagina Cambiare chromium:4613967.
Se l'origine WGSL code
contiene \0
, viene generato un errore durante la chiamata a createShaderModule()
. Vedi issue dawn:1345.
Il livello massimo di dettaglio predefinito (lodMaxClamp
) utilizzato per il campionamento di una texture con createSampler()
è 32. Visita la pagina Cambiare chromium:4608063.
Migliorare l'esperienza degli sviluppatori
Nella console JavaScript di DevTools viene visualizzato un messaggio che ricorda agli sviluppatori quando utilizzano WebGPU su una piattaforma non supportata. Visita la pagina Cambiare chromium:4589369.
I messaggi di errore relativi alla convalida del buffer vengono mostrati immediatamente nella console JavaScript di DevTools in caso di errore di getMappedRange()
, senza che gli sviluppatori debbano inviare comandi alla coda. Visita la pagina Cambiare chromium:4597950.
Aggiornamenti da Dawn
L'opzione di attivazione/disattivazione di debug di disallow_unsafe_apis
è stata rinominata in allow_unsafe_apis
e è stata disattivata per impostazione predefinita. Questa opzione di attivazione/disattivazione elimina gli errori di convalida nei punti di ingresso dell'API o nelle combinazioni di parametri non ancora considerati sicuri. Può essere utile per il debug.
Vedi issue dawn:1685.
L'attributo source
deprecato wgpu::ShaderModuleWGSLDescriptor
è stato rimosso a favore di code
. Vedi change dawn:130321.
Il metodo wgpu::RenderBundle::SetLabel()
mancante è stato implementato. Vedi change dawn:134502.
Le applicazioni possono richiedere un backend specifico quando ricevono un adattatore con l'opzione wgpu::RequestAdapterOptionsBackendType
. Vedi un esempio di seguito e issue dawn:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
È stato aggiunto un nuovo metodo SwapChain::GetCurrentTexture()
con utilizzi aggiuntivi per le texture swapchain, in modo che il valore restituito wgpu::Texture
possa essere utilizzato nelle copie. Vedi un esempio sotto e issue dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
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