Alleen-lezen en lezen-schrijven opslagtexturen
Met het opslagtextuurbindingstype kunnen shaders uit opslagtexturen lezen zonder het TEXTURE_BINDING
gebruik toe te voegen, en gemengde lees- en schrijfbewerkingen uitvoeren op bepaalde formaten. Wanneer de WGSL -taalextensie "readonly_and_readwrite_storage_textures"
aanwezig is in navigator.gpu.wgslLanguageFeatures
, kunt u nu GPUStorageTexture
toegang instellen op "read-write"
of "read-only"
bij het maken van een bindingsgroepsindeling. Voorheen was dit beperkt tot "write-only"
.
Vervolgens kan uw WGSL-shadercode read_write
en read
gebruiken voor opslagtexturen, de ingebouwde functies textureLoad()
en textureStore()
gedragen zich dienovereenkomstig, en er is een nieuwe ingebouwde functie textureBarrier()
beschikbaar om toegang tot textuurgeheugen te synchroniseren een werkgroep.
Het wordt aanbevolen om een require-directive te gebruiken om de mogelijkheid van niet-portabiliteit aan te geven met requires readonly_and_readwrite_storage_textures;
bovenaan uw WGSL-shadercode. Zie het volgende voorbeeld en nummer Dawn:1972 .
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
Ondersteuning van servicemedewerkers en gedeelde medewerkers
WebGPU in Chrome tilt de ondersteuning van webwerkers naar een hoger niveau en biedt nu ondersteuning voor zowel servicewerkers als gedeelde werkers . U kunt servicewerkers gebruiken om achtergrondtaken en offlinemogelijkheden te verbeteren, en gedeelde werknemers voor het efficiënt delen van bronnen tussen scripts. Zie uitgave chroom:41494731 .
Bekijk het Chrome-extensievoorbeeld en de WebLLM Chrome-extensie om te zien hoe u WebGPU kunt gebruiken in een extensieservicemedewerker.
Nieuwe attributen voor adapterinformatie
Niet-standaard d3dShaderModel
en vkDriverVersion
-adapterinfokenmerken zijn nu beschikbaar bij het aanroepen requestAdapterInfo()
als de gebruiker de vlag "WebGPU Developer Features" heeft ingeschakeld op chrome://flags/#enable-webgpu-developer-features
. Wanneer ondersteund:
Het
d3dShaderModel
is het maximaal ondersteunde D3D-shadermodelnummer. De waarde 62 geeft bijvoorbeeld aan dat het huidige stuurprogramma HLSL SM 6.2 ondersteunt. Zie documentatie en uitgave Dawn:1254 .De
vkDriverVersion
is het door de leverancier opgegeven versienummer van het Vulkan-stuurprogramma. Zie documentatie en uitgave chroom:327457605 .
Bugfixes
Het maken van twee pijplijnen met overeenkomende bindgroups met behulp van layout: "auto"
, het maken van een bindgroup met de eerste pijplijn en het gebruik ervan op de tweede pijplijn levert nu een GPUValidationError op. Het toestaan ervan was een implementatiefout die nu met de juiste tests is opgelost. Zie uitgave Dawn:2402 .
Dawn-updates
In de Dawn API wordt de niet-opgevangen fout-callback die is ingesteld met wgpuDeviceSetUncapturedErrorCallback
nu niet aangeroepen nadat het GPU-apparaat verloren is gegaan. Deze oplossing brengt Dawn in lijn met de JavaScript API-specificatie en de implementatie van Blink. Zie uitgave Dawn:2459 .
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
- Compilatieoptie Shader-module 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-vastgelegde 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