Experimentele ondersteuning voor OpenGL ES op Android
U hebt nu toegang tot een GPUAdapter
vanuit de OpenGL ES-backend wanneer u de experimentele WebGPU-compatibiliteitsmodus aanvraagt in Chrome voor Android. Dit is vooral handig voor Android-apparaten die geen ondersteuning bieden voor Vulkan 1.1 of hoger. Zie het volgende voorbeeld en uitgave Dawn:1545 .
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
Omdat deze functie zich nog in een experimentele fase bevindt, moet u de volgende stappen uitvoeren:
- Schakel de volgende Chrome-vlaggen in: 'Onveilige WebGPU-ondersteuning', 'WebGPU-ontwikkelaarsfuncties' en 'Opdrachtregel inschakelen op niet-geroote apparaten'.
- Schakel USB-foutopsporing in op uw Android-apparaat.
- Sluit uw Android-apparaat aan op uw werkstation, voer
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
om de OpenGL ES-backend te verkiezen boven Vulkan, en start opnieuw op Chroom.
GPUAdapter info-kenmerk
Het verkrijgen van identificerende informatie over een adapter kan nu op een synchrone manier worden gedaan met het GPUAdapter info
attribuut. Voorheen was het aanroepen van de asynchrone GPUAdapter requestAdapterInfo()
-methode de enige manier om adapterinformatie te verkrijgen. requestAdapterInfo()
is echter verwijderd uit de WebGPU-specificatie en zal later dit jaar in Chrome worden verwijderd om webontwikkelaars voldoende tijd te geven om de noodzakelijke overgang te maken. Zie het volgende voorbeeld, Chrome Status en probleem 335383516 .
const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;
// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();
console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"
Verbeteringen in de interoperabiliteit van WebAssembly
Om ervoor te zorgen dat WebAssembly-heaps rechtstreeks aan WebGPU worden doorgegeven, zijn de grootten van de volgende BufferSource-argumenten niet langer beperkt tot 2 GB: dynamicOffsetsData
in setBindGroup()
, data
in writeBuffer()
en data
Pin writeTexture()
. Zie uitgave 339049388 .
Verbeterde opdracht-encoderfouten
Sommige validatiefouten die door commando-encoders worden gegenereerd, hebben nu verbeterde contextuele informatie. Een poging om bijvoorbeeld een rekenpas te starten terwijl een renderpas nog open was, resulteerde in de volgende fout.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)
Dit beschrijft wel de reden voor de fout, maar geeft niet aan welke oproep daadwerkelijk de validatiefout heeft veroorzaakt. De volgende fout toont de verbeterde berichtgeving, inclusief de opdracht die de fout heeft veroorzaakt. Zie wijziging 192245 .
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
- While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).
Dawn-updates
De webgpu.h C API stelt niet langer wgpuSurfaceGetPreferredFormat()
beschikbaar, het C-equivalent van Dawn's wgpu::Surface::GetPreferredFormat()
. Gebruik in plaats daarvan wgpu::Surface::GetCapabilities()
om de lijst met ondersteunde formaten op te halen, en gebruik vervolgens formats[0]
om het textuurformaat te verkrijgen dat de voorkeur heeft voor dit oppervlak. In de tussentijd geeft het aanroepen van wgpu::Surface::GetPreferredFormat()
een beëindigingswaarschuwing af. Zie nummer 290 .
Het ondersteunde textuurgebruik van een oppervlak is nu beschikbaar via wgpu::SurfaceCapabilities::usages
bij het aanroepen wgpu::Surface::GetCapabilities()
. Er wordt verwacht dat ze altijd wgpu::TextureUsage::RenderAttachment
bevatten. Zie nummer 301 .
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 131
- Clipafstanden in WGSL
- GPUCanvasContext getConfiguration()
- Punt- en lijnprimitieven mogen geen diepteafwijking hebben
- Inclusief ingebouwde scanfuncties voor subgroepen
- Experimentele ondersteuning voor indirecte meertrekking
- Shader-module compilatie-optie strikte wiskunde
- GPUAdapter requestAdapterInfo() verwijderen
- Dawn-updates
Chroom 130
- Mengen met dubbele bron
- Verbeteringen in de compilatietijd van Shader op Metal
- Beëindiging van GPUAdapter requestAdapterInfo()
- Dawn-updates
Chroom 129
- HDR-ondersteuning met canvas-tone mapping-modus
- Uitgebreide ondersteuning voor subgroepen
- Dawn-updates
Chroom 128
- Experimenteren met subgroepen
- Beëindig het instellen van diepteafwijking voor lijnen en punten
- Niet-opgevangen fout verbergen DevTools-waarschuwing als preventieDefault
- WGSL interpoleert eerst de bemonstering en een van beide
- Dawn-updates
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
- Verleg de grenzen
- 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