WebCodecs-integratie
WebGPU stelt een API ter beschikking om ondoorzichtige "externe textuur"-objecten van HTMLVideoElement
te maken via importExternalTexture()
. U kunt deze objecten gebruiken om de videoframes efficiënt te bemonsteren, mogelijk zonder kopieën, rechtstreeks vanuit de bron -YUV- kleurmodelgegevens.
De initiële WebGPU-specificatie stond het maken van GPUExternalTexture
-objecten uit WebCodecs VideoFrame
objecten echter niet toe. Deze mogelijkheid is belangrijk voor geavanceerde videoverwerkingsapps die al WebCodecs gebruiken en WebGPU willen integreren in de videoverwerkingspijplijn. WebCodecs-integratie voegt ondersteuning toe voor het gebruik van een VideoFrame
als bron voor een GPUExternalTexture
en een copyExternalImageToTexture()
-aanroep. Zie het volgende voorbeeld en het chromestatus-item .
// 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.
Bekijk het experimentele voorbeeld Video Uploaden met WebCodecs om ermee te spelen.
Verloren apparaat geretourneerd door GPUAdapter requestDevice()
Als de requestDevice()
-methode op GPUAdapter
mislukt omdat deze al is gebruikt om een GPUDevice
te maken, wordt deze nu uitgevoerd met een GPUDevice
die onmiddellijk als verloren is gemarkeerd, in plaats van een belofte terug te geven die wordt afgewezen met null
. Zie uitgave chroom: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;
Houd het afspelen van video soepel als importExternalTexture() wordt aangeroepen
Wanneer importExternalTexture()
wordt aangeroepen met een HTMLVideoElement
, wordt het afspelen van de bijbehorende video niet meer beperkt wanneer de video niet zichtbaar is in de viewport. Zie uitgave chroom:1425252 .
Spec-conformiteit
Het message
in de GPUPipelineError()
constructor is optioneel. Zie wijziging chroom:4613967 .
Er wordt een fout gegenereerd bij het aanroepen van createShaderModule()
als de WGSL- code
bevat \0
. Zie uitgave Dawn:1345 .
Het standaard maximale detailniveau ( lodMaxClamp
) dat wordt gebruikt bij het bemonsteren van een textuur met createSampler()
is 32. Zie wijziging chroom:4608063 .
Verbetering van de ontwikkelaarservaring
Er wordt een bericht weergegeven in de DevTools JavaScript-console om ontwikkelaars eraan te herinneren wanneer ze WebGPU gebruiken op een niet-ondersteund platform. Zie wijziging chroom:4589369 .
Buffervalidatiefoutmeldingen worden onmiddellijk weergegeven in de DevTools JavaScript-console wanneer getMappedRange()
mislukt, zonder ontwikkelaars te dwingen opdrachten naar de wachtrij te sturen. Zie wijziging chroom:4597950 .
![Schermafbeelding van de DevTools JavaScript-console met foutmelding over buffervalidatie.](https://developer.chrome.google.cn/static/blog/new-in-webgpu-116/image/screenshot-devtools-java-f6335abfb3e85.png?authuser=8&hl=nl)
Dawn-updates
De debug-schakelaar disallow_unsafe_apis
is hernoemd naar allow_unsafe_apis
en is standaard uitgeschakeld. Deze schakelaar onderdrukt validatiefouten op API-ingangspunten of parametercombinaties die nog niet als veilig worden beschouwd. Het kan nuttig zijn bij het debuggen . Zie uitgave Dawn:1685 .
Het verouderde source
wgpu::ShaderModuleWGSLDescriptor
is verwijderd ten gunste van code
. Zie wijziging dageraad:130321 .
De ontbrekende wgpu::RenderBundle::SetLabel()
is geïmplementeerd. Zie wijziging dageraad:134502 .
Toepassingen kunnen een bepaalde backend aanvragen wanneer ze een adapter verkrijgen met de optie wgpu::RequestAdapterOptionsBackendType
. Zie hieronder een voorbeeld en geef Dawn:1875 uit .
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Er is een nieuwe SwapChain::GetCurrentTexture()
methode toegevoegd met extra toepassingen voor swapchain-texturen, zodat de geretourneerde wgpu::Texture
in kopieën kan worden gebruikt. Zie een voorbeeld hieronder en geef dageraad:1551 op .
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
Dit behandelt slechts enkele van de belangrijkste hoogtepunten. Bekijk de uitgebreide lijst met commits .
Wat is er nieuw in WebGPU
Een lijst met alles wat aan bod komt in de What's New in WebGPU- serie.
Chroom 127
- Experimentele ondersteuning voor OpenGL ES op Android
- GPUAdapter info-kenmerk
- Verbeteringen in de interoperabiliteit van WebAssembly
- Verbeterde opdracht-encoderfouten
- Dawn-updates
Chroom 126
- Verhoog de maxTextureArrayLayers-limiet
- Bufferuploadoptimalisatie voor Vulkan-backend
- Verbeteringen in de compilatietijd van Shader
- Ingezonden opdrachtbuffers moeten uniek zijn
- Dawn-updates
Chroom 125
Chroom 124
- Alleen-lezen en lezen-schrijven opslagtexturen
- Ondersteuning van servicemedewerkers en gedeelde medewerkers
- Nieuwe attributen voor adapterinformatie
- Bugfixes
- Dawn-updates
Chroom 123
- DP4a ingebouwde functies ondersteunen in WGSL
- Onbeperkte pointerparameters in WGSL
- Syntaxissuiker voor het derefereren van composieten in WGSL
- Afzonderlijke alleen-lezen-status voor stencil- en diepteaspecten
- Dawn-updates
Chroom 122
- Vergroot het bereik met de compatibiliteitsmodus (functie in ontwikkeling)
- Verhoog de maxVertexAttributes-limiet
- Dawn-updates
Chroom 121
- Ondersteuning WebGPU op Android
- Gebruik DXC in plaats van FXC voor shader-compilatie op Windows
- Tijdstempelquery's in reken- en renderpassen
- Standaardingangspunten voor shadermodules
- Ondersteuning display-p3 als GPUExternalTexture-kleurruimte
- Informatie over geheugenheaps
- Dawn-updates
Chroom 120
- Ondersteuning voor 16-bit drijvende-kommawaarden in WGSL
- Grenzen verleggen
- Veranderingen in de staat van de diepte-stencil
- Updates van adapterinformatie
- Kwantisering van tijdstempelquery's
- Lenteschoonmaakfuncties
Chroom 119
- Filterbare 32-bit float-texturen
- unorm10-10-10-2 hoekpuntformaat
- rgb10a2uint textuurformaat
- Dawn-updates
Chroom 118
- HTMLImageElement- en ImageData-ondersteuning in
copyExternalImageToTexture()
- Experimentele ondersteuning voor lees-schrijf- en alleen-lezen opslagtextuur
- Dawn-updates
Chroom 117
- Schakel hoekpuntbuffer uit
- Schakel de bindingsgroep uit
- Stil fouten bij het maken van asynchrone pijplijnen wanneer het apparaat verloren gaat
- Updates voor het maken van SPIR-V-shadermodules
- Verbetering van de ontwikkelaarservaring
- Caching van pijplijnen met automatisch gegenereerde lay-out
- Dawn-updates
Chroom 116
- WebCodecs-integratie
- Verloren apparaat geretourneerd door GPUAdapter
requestDevice()
- Houd het afspelen van video soepel als
importExternalTexture()
wordt aangeroepen - Spec-conformiteit
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chroom 115
- Ondersteunde WGSL-taalextensies
- Experimentele ondersteuning voor Direct3D 11
- Krijg standaard een discrete GPU op wisselstroom
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chroom 114
- Optimaliseer JavaScript
- getCurrentTexture() op een niet-geconfigureerd canvas genereert InvalidStateError
- WGSL-updates
- Dawn-updates