Gepubliceerd: 23 april 2025
GPUAdapterInfo isFallbackAdapter-kenmerk
Het booleaanse kenmerk GPUAdapterInfo isFallbackAdapter
geeft aan of een GPUAdapter aanzienlijke prestatiebeperkingen heeft in ruil voor bredere compatibiliteit, voorspelbaarder gedrag of verbeterde privacy. Deze toevoeging was nodig omdat bibliotheken die door de gebruiker aangeleverde GPUDevice-objecten gebruiken, geen toegang hadden tot deze informatie via het kenmerk adapterInfo
op GPUDevice. Zie het volgende voorbeeld en probleem 403172841 .
const adapter = await navigator.gpu.requestAdapter();
if (adapter?.info.isFallbackAdapter) {
// The returned adapter is a software-backed fallback adapter, which
// may have significantly lower performance and fewer features.
}
Omdat Chrome nog geen ondersteuning voor fallback-adapters heeft, is isFallbackAdapter
momenteel altijd false op apparaten van gebruikers. We onderzoeken of het GPUAdapter isFallbackAdapter
-kenmerk kan worden verouderd en verwijderd. Zie de intentie om te leveren .
Verbeteringen in de shadercompilatietijd op D3D12
Het Chrome-team blijft Tint, de compiler voor de WebGPU-shadertaal, verbeteren door een tussenliggende representatie (IR) toe te voegen voor apparaten die WebGPU met de D3D12-backend ondersteunen. Deze IR, geplaatst tussen de abstracte syntaxisboom (AST) van Tint en de HLSL-backendwriter, zal de compiler efficiënter en beter te onderhouden maken, wat uiteindelijk zowel ontwikkelaars als gebruikers ten goede komt. Eerste tests tonen aan dat de nieuwe versie van Tint tot 10 keer sneller is bij het vertalen van Unity's WGSL-shaders naar HLSL.

Deze verbeteringen – al beschikbaar op Android, ChromeOS en macOS – worden geleidelijk uitgebreid naar Windows-apparaten die WebGPU met de D3D12-backend ondersteunen. Zie probleem 42251045 .
Canvasafbeeldingen opslaan en kopiëren
Chrome-gebruikers kunnen nu met de rechtermuisknop op een WebGPU-canvas klikken en toegang krijgen tot de contextmenuopties Afbeelding opslaan als... of Afbeelding kopiëren . Zie probleem 40902474 .

Beperkingen voor de liftcompatibiliteitsmodus
De experimentele functie "core-features-and-limits"
indien beschikbaar op een GPU-apparaat, heft alle beperkingen (functies en limieten) van de compatibiliteitsmodus op wanneer de vlag chrome://flags/#enable-unsafe-webgpu
is ingeschakeld. Zie probleem 395855517 .
Het aanvragen van een GPUAdapter met de featureLevel: "compatibility"
optie geeft de browser een hint om de experimentele WebGPU-compatibiliteitsmodus te selecteren. Als dit lukt, is de resulterende adapter "compatibility-defaulting". Anders is deze "core-defaulting", wat hetzelfde is als het gebruik van de featureLevel: "core"
optie. Bovendien wordt door het aanroepen requestDevice()
zonder requiredFeatures
en requiredLimits
een GPUDevice aangevraagd met de standaardmogelijkheden van de GPUAdapter.
Adapters met een standaard core-default ondersteunen altijd de functie "core-features-and-limits"
en deze is automatisch ingeschakeld op GPUDevices die hiermee worden aangemaakt. Voor adapters met een standaard compatibiliteitsdefault kan de functie "core-features-and-limits"
worden ondersteund en kan deze worden aangevraagd op GPUDevices die hiermee worden aangemaakt. Beide typen adapters ondersteunen mogelijk ook functies zoals "float32-blendable"
, wat optioneel is in zowel de core- als de compatibiliteitsmodus.
Het volgende voorbeeld is voor een toepassing die "float32-blendable"
vereist en die het gebruik van kernfuncties ondersteunt indien beschikbaar, maar alleen compatibiliteitsfuncties gebruikt als kernfuncties niet beschikbaar zijn.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (!adapter || !adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
requiredFeatures.push("core-features-and-limits");
}
const device = await adapter.requestDevice({ requiredFeatures });
if (!device.features.has("core-features-and-limits")) {
// Compatibility mode restrictions validation rules will apply.
}
De experimentele GPUAdapter featureLevel
en isCompatibilityMode
-kenmerken zijn verwijderd ten gunste van de functie "core-features-and-limits"
. Zie probleem 395855516 .
Dawn-updates
De callbackstatus- enum ' InstanceDropped
is hernoemd naar CallbackCancelled
om duidelijk te maken dat de callback is geannuleerd, maar dat de achtergrondverwerking die aan de gebeurtenis is gekoppeld, zoals pijplijncompilatie, mogelijk nog steeds actief is. De nieuwe naam is algemener toepasbaar, voor het geval er later een ander annuleringsmechanisme wordt toegevoegd. Zie issue 520 .
De wgpu::PopErrorScopeStatus::EmptyStack
enum die aangeeft dat de stack van de foutscope niet kon worden gepopt, is hernoemd naar wgpu::PopErrorScopeStatus::Error
(wat ook algemener toepasbaar is). De callback bevat nu ook een bijbehorend foutbericht ter ondersteuning van debugging. Zie probleem 369 .
Dit behandelt slechts enkele van de belangrijkste hoogtepunten. Bekijk de volledige lijst met commits .
Wat is er nieuw in WebGPU
Een lijst met alles wat in de serie Wat is er nieuw in WebGPU is behandeld.
Chroom 138
- Afkorting voor het gebruik van buffer als bindingsbron
- Wijzigingen in de groottevereisten voor buffers die bij het aanmaken in kaart zijn gebracht
- Architectuurrapport voor recente GPU's
- Verouder GPUAdapter isFallbackAdapter-kenmerk
- Dawn-updates
Chroom 137
- Gebruik textuurweergave voor externe textuurbinding
- Buffers kopiëren zonder offsets en grootte op te geven
- WGSL-werkgroepUniformLoad met behulp van een pointer naar atomaire
- GPUAdapterInfo powerPreference-kenmerk
- GPURequestAdapterOptions compatibilityMode-kenmerk verwijderen
- Dawn-updates
Chroom 136
- GPUAdapterInfo isFallbackAdapter-kenmerk
- Verbeteringen in de shadercompilatietijd op D3D12
- Canvasafbeeldingen opslaan en kopiëren
- Beperkingen voor de liftcompatibiliteitsmodus
- Dawn-updates
Chroom 135
- Het maken van een pijplijnlayout met een lay-out voor nulbindingsgroepen toestaan
- Laat viewports zich uitstrekken voorbij de grenzen van de renderdoelen
- Gemakkelijkere toegang tot de experimentele compatibiliteitsmodus op Android
- Verwijder maxInterStageShaderComponents-limiet
- Dawn-updates
Chroom 134
- Verbeter machine learning-workloads met subgroepen
- Verwijder float-filterbare textuurtypen als ondersteuning voor mengbaar
- Dawn-updates
Chroom 133
- Extra unorm8x4-bgra en 1-component vertex-formaten
- Toestaan dat onbekende limieten worden aangevraagd met een ongedefinieerde waarde
- Wijzigingen in de WGSL-uitlijningsregels
- WGSL-prestatiewinst met weggooien
- Gebruik VideoFrame displaySize voor externe texturen
- Verwerk afbeeldingen met niet-standaardoriëntaties met copyExternalImageToTexture
- Verbetering van de ontwikkelaarservaring
- Compatibiliteitsmodus inschakelen met featureLevel
- Opschonen van experimentele subgroepkenmerken
- Verouder maxInterStageShaderComponents-limiet
- Dawn-updates
Chroom 132
- Gebruik van textuurweergave
- 32-bits float-texturen mengen
- GPUDevice adapterInfo-kenmerk
- Het configureren van de canvascontext met een ongeldige indeling levert een JavaScript-fout op
- Filteren van samplerbeperkingen op texturen
- Uitgebreide subgroepsexperimenten
- Verbetering van de ontwikkelaarservaring
- Experimentele ondersteuning voor 16-bits genormaliseerde textuurformaten
- Dawn-updates
Chroom 131
- Clipafstanden in WGSL
- GPUCanvasContext getConfiguration()
- Punt- en lijnprimitieven mogen geen dieptebias hebben
- Inclusief ingebouwde scanfuncties voor subgroepen
- Experimentele ondersteuning voor multi-draw indirect
- Shadermodule compilatieoptie strikte wiskunde
- GPUAdapter requestAdapterInfo() verwijderen
- Dawn-updates
Chroom 130
- Menging van dubbele bronnen
- Verbeteringen in de shadercompilatietijd op Metal
- Veroudering van GPUAdapter requestAdapterInfo()
- Dawn-updates
Chroom 129
Chroom 128
- Experimenteren met subgroepen
- Verouder het instellen van dieptebias voor lijnen en punten
- Verberg niet-vastgelegde fout DevTools-waarschuwing als preventDefault
- WGSL interpoleert eerst de bemonstering en
- Dawn-updates
Chroom 127
- Experimentele ondersteuning voor OpenGL ES op Android
- GPUAdapter info-kenmerk
- Verbeteringen in WebAssembly-interoperabiliteit
- Verbeterde commando-encoderfouten
- Dawn-updates
Chroom 126
- Verhoog de maxTextureArrayLayers-limiet
- Bufferuploadoptimalisatie voor Vulkan-backend
- Verbeteringen in de compilatietijd van shaders
- Ingediende opdrachtbuffers moeten uniek zijn
- Dawn-updates
Chroom 125
Chroom 124
- Alleen-lezen en lees-schrijf opslagtexturen
- Ondersteuning van servicemedewerkers en gedeelde werknemers
- Nieuwe adapterinformatie-attributen
- Bugfixes
- Dawn-updates
Chroom 123
- Ondersteuning voor ingebouwde DP4a-functies in WGSL
- Onbeperkte pointerparameters in WGSL
- Syntaxissuiker voor het derefereren van composieten in WGSL
- Afzonderlijke alleen-lezenstatus 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 voor WebGPU op Android
- Gebruik DXC in plaats van FXC voor shadercompilatie op Windows
- Tijdstempelquery's in compute- en renderpassen
- Standaard toegangspunten tot shadermodules
- Ondersteuning display-p3 als GPUExternalTexture-kleurruimte
- Geheugenstapels info
- Dawn-updates
Chroom 120
- Ondersteuning voor 16-bits drijvende-kommawaarden in WGSL
- Verleg de grenzen
- Wijzigingen in de dieptestencilstatus
- Adapterinformatie-updates
- Kwantificering van tijdstempelquery's
- Voorjaarsschoonmaak
Chroom 119
- Filterbare 32-bits float-texturen
- unorm10-10-10-2 vertex-formaat
- 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
- Vertexbuffer ongedaan maken
- Bindgroep ongedaan maken
- Fouten bij het maken van een asynchrone pijplijn uitschakelen wanneer het apparaat verloren is gegaan
- Updates voor het maken van SPIR-V-shadermodules
- Verbetering van de ontwikkelaarservaring
- Caching-pipelines met automatisch gegenereerde lay-out
- Dawn-updates
Chroom 116
- WebCodecs-integratie
- Verloren apparaat geretourneerd door GPUAdapter
requestDevice()
- Zorg ervoor dat de videoweergave vloeiend blijft als
importExternalTexture()
wordt aangeroepen - Specificatieconformiteit
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chroom 115
- Ondersteunde WGSL-taalextensies
- Experimentele ondersteuning voor Direct3D 11
- Standaard discrete GPU op netstroom
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chroom 114
- JavaScript optimaliseren
- getCurrentTexture() op een niet-geconfigureerd canvas genereert InvalidStateError
- WGSL-updates
- Dawn-updates