Experimentele ondersteuning voor OpenGL ES op Android
U kunt nu toegang krijgen tot een GPUAdapter
vanuit de OpenGL ES-backend wanneer u de experimentele WebGPU-compatibiliteitsmodus in Chrome voor Android aanvraagt. Dit is vooral handig voor Android-apparaten die geen ondersteuning bieden voor Vulkan 1.1 of hoger. Zie het volgende voorbeeld en issue dawn:1545 .
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
Omdat deze functie zich nog in een experimenteel stadium bevindt, moet u de volgende stappen uitvoeren:
- Schakel de volgende Chrome-vlaggen in: 'Ondersteuning voor onveilige WebGPU', '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 boven Vulkan te verkiezen en start Chrome opnieuw op.
GPUAdapter info-kenmerk
Het verkrijgen van identificerende informatie over een adapter kan nu synchroon worden gedaan met het info
-kenmerk van de GPUAdapter. 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 WebAssembly-interoperabiliteit
Om WebAssembly-heaps rechtstreeks aan WebGPU door te geven, zijn de groottes van de volgende BufferSource-argumenten niet langer beperkt tot 2 GB: dynamicOffsetsData
in setBindGroup()
, data
in writeBuffer()
en data
Pin writeTexture()
. Zie probleem 339049388 .
Verbeterde commando-encoderfouten
Sommige validatiefouten die door commando-encoders worden gegenereerd, beschikken nu over verbeterde contextuele informatie. Zo resulteerde een poging om een rekenpass te starten terwijl er nog een renderpass openstond, 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 aanroep de validatiefout daadwerkelijk heeft veroorzaakt. De volgende foutmelding 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 maakt geen gebruik meer van wgpuSurfaceGetPreferredFormat()
, het C-equivalent van Dawn's wgpu::Surface::GetPreferredFormat()
. Gebruik in plaats daarvan wgpu::Surface::GetCapabilities()
om de lijst met ondersteunde formaten op te vragen en gebruik vervolgens formats[0]
om het gewenste textuurformaat voor dit oppervlak te verkrijgen. In de tussentijd genereert het aanroepen van wgpu::Surface::GetPreferredFormat()
een waarschuwing over veroudering. Zie probleem 290 .
Het ondersteunde textuurgebruik van een oppervlak is nu beschikbaar via wgpu::SurfaceCapabilities::usages
bij het aanroepen wgpu::Surface::GetCapabilities()
. Er wordt verwacht dat dit altijd wgpu::TextureUsage::RenderAttachment
bevat. Zie issue 301 .
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