WGSLLanguageFeatures

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die WGSLLanguageFeatures-Schnittstelle der WebGPU API ist ein set-ähnliches Objekt, das die vom WebGPU-Implementierung unterstützten WGSL-Spracherweiterungen meldet.

Das WGSLLanguageFeatures-Objekt wird über die GPU.wgslLanguageFeatures-Eigenschaft aufgerufen.

Hinweis: Nicht alle WGSL-Spracherweiterungen sind in allen Browsern, die die API unterstützen, für WebGPU verfügbar. Wir empfehlen, alle Erweiterungen, die Sie verwenden möchten, gründlich zu testen.

Verfügbare Funktionen

Die folgenden WGSL-Spracherweiterungen sind in den WGSL-Spracherweiterungen in der WGSL-Spezifikation definiert. Beachten Sie, dass der genaue Satz an verfügbaren Funktionen zwischen Implementierungen und physischen Geräten variieren kann und sich im Laufe der Zeit ändern kann.

packed_4x8_integer_dot_product

Erlaubt DP4a-GPU-Anweisungen (Dot Product of 4 Elements and Accumulate), die über Ihren WGSL-Code verwendet werden können. Diese führen effizient 8-Bit-Integer-Punktprodukte aus, um Berechnungen zu beschleunigen, Speicher und Netzwerkbandbreite zu sparen und die Leistung im Vergleich zu den entsprechenden f32-Versionen zu verbessern. Sie werden häufig in inferenzierenden Maschinenlernmodellen innerhalb von KI-Frameworks eingesetzt.

Insbesondere kann bei Verfügbarkeit von packed_4x8_integer_dot_product WGSL-Code verwenden:

  • 32-Bit-Integer-Skalare, die 4-Komponenten-Vektoren von 8-Bit-Integern verpacken, um als Eingaben für Punktproduktanweisungen verwendet zu werden (über die eingebauten Funktionen dot4U8Packed() und dot4I8Packed()).
  • Verpackungs- und Entpackungsanweisungen mit verpackten 4-Komponenten-Vektoren von 8-Bit-Integern (über eingebaute Funktionen wie pack4xI8() und pack4xI8Clamp()).
readonly_and_readwrite_storage_textures

Ermöglicht, wenn verfügbar, die Angabe der Werte "read-only" und "read-write" für storageTexture.access, wenn Speichertextur-Bindgruppen-Eintragstypen in einem Bindgruppenlayout angegeben werden. Diese erlauben WGSL-Code das Lesen von Speichertexturen oder das Lesen und Schreiben von Speichertexturen.

unrestricted_pointer_parameters

Lockert die Einschränkungen für Zeiger, die an WGSL-Funktionen übergeben werden. Wenn verfügbar, sind die folgenden erlaubt:

  • Parameterzeiger auf Speicher-, Uniform- und Arbeitsgruppenspeicher, die an benutzerdefinierte Funktionen übergeben werden.

  • Zeiger auf Strukturmitglieder und Array-Elemente, die an benutzerdefinierte Funktionen übergeben werden.

    Siehe Zeiger als Funktionsparameter für weitere Details.

Instanzeigenschaften

Die folgende Eigenschaft ist in allen schreibgeschützten set-ähnlichen Objekten verfügbar:

size Experimentell

Gibt die Anzahl der Werte im Set zurück.

Instanzmethoden

Die folgenden Methoden sind in allen schreibgeschützten set-ähnlichen Objekten verfügbar:

has() Experimentell

Gibt einen booleschen Wert zurück, der angibt, ob ein Element mit dem gegebenen Wert im Set vorhanden ist oder nicht.

values() Experimentell

Gibt ein neues Iterator-Objekt zurück, das Werte für jedes Element im Set in Einfügereihenfolge liefert.

keys() Experimentell

Ein Alias für values().

entries() Experimentell

Gibt ein neues Iterator-Objekt zurück, das ein Array von [value, value] für jedes Element im Set in Einfügereihenfolge enthält.

forEach() Experimentell

Ruft die bereitgestellte Callback-Funktion einmal für jeden im Set vorhandenen Wert in Einfügereihenfolge auf.

Beispiele

Überprüfen, ob eine Erweiterung verfügbar ist

js
if (
  navigator.gpu.wgslLanguageFeatures.has(
    "readonly_and_readwrite_storage_textures",
  )
) {
  console.log("Read-only and read-write storage textures are available");
}

Set-Größe zurückgeben und durch Werte iterieren

js
const wgslFeatures = navigator.gpu.wgslLanguageFeatures;

// Return the size of the set
console.log(wgslFeatures.size);

// Iterate through all the set values using values()
const valueIterator = wgslFeatures.values();
for (const value of valueIterator) {
  console.log(value);
}

// ...

Spezifikationen

Specification
WebGPU
# gpuwgsllanguagefeatures

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch