Unterstützung für HTMLImageElement und ImageData in copyExternalImageToTexture()
Mit der copyExternalImageToTexture() Methode für GPUQueue können Sie einen Snapshot aus einem Quellbild, ‑video oder ‑canvas in eine bestimmte GPUTexture kopieren. Jetzt können Sie HTMLImageElement und ImageData Objekte als Quelle übergeben. Weitere Informationen finden Sie im folgenden Beispiel und unter chromium:1471372.
// Fetch and decode image.
const source = document.createElement("img");
source.src = "my-image.png";
await source.decode();
// Create destination texture.
const size = [source.width, source.height];
const texture = myDevice.createTexture({
size,
format: "rgba8unorm",
usage:
GPUTextureUsage.COPY_DST |
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING,
});
// Copies a snapshot taken from the source image into a texture.
myDevice.queue.copyExternalImageToTexture({ source }, { texture }, size);
Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertexturen
Mit dem Bindungstyp für Speichertexturen können Sie Texturen lesen, ohne sie zu samplen, und sie an beliebigen Positionen in Shadern speichern. Wenn die "chromium-experimental-read-write-storage-texture" Funktion in einem GPUAdapter verfügbar ist, können Sie jetzt ein GPUDevice mit dieser Funktion anfordern und den Zugriff auf GPUStorageTexture beim Erstellen eines Bindungsgruppenlayouts auf "read-write" oder "read-only" festlegen. Bisher war dies auf "write-only" beschränkt.
Damit Sie diese Funktion nutzen können, müssen Sie sie in Ihrem WGSL-Code mit enable chromium_experimental_read_write_storage_texture explizit aktivieren. Wenn die Funktion aktiviert ist, können Sie die Zugriffsqualifizierer read_write und read für Speichertexturen verwenden. Die integrierten Funktionen textureLoad() und textureStore() verhalten sich entsprechend. Außerdem ist eine neue integrierte Funktion textureBarrier() verfügbar, mit der Sie den Zugriff auf den Texturspeicher in einer Arbeitsgruppe synchronisieren können. Weitere Informationen finden Sie im folgenden Beispiel und unter dawn:1972.
Diese Funktion ist noch experimentell und kann sich ändern. Während sie standardisiert wird, können Sie Chrome mit dem --enable-dawn-features=allow_unsafe_apis Flag ausführen, um sie verfügbar zu machen.
const feature = "chromium-experimental-read-write-storage-texture";
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has(feature)) {
throw new Error("Read-write storage texture support is not available");
}
// Explicitly request read-write storage texture support.
const device = await adapter.requestDevice({
requiredFeatures: [feature],
});
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_read_write_storage_texture;
@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.
Dawn-Updates
In der C-API webgpu.h wurden die folgenden Felder aus Konsistenzgründen umbenannt: requiredFeaturesCount in requiredFeatureCount, pipelineStatisticsCount in pipelineStatisticCount und colorFormatsCount in colorFormatCount. Weitere Informationen finden Sie unter dawn:146040.
Mit dem neuen DawnInfo Programm (ähnlich vulkaninfo) können Sie Schalter, Adapter, Adapterfunktionen und Adapterlimits auflisten. Es ist verfügbar, wenn Sie Dawn samples erstellen. Die Ausgabe unten wurde zur besseren Lesbarkeit stark gekürzt. Weitere Informationen finden Sie unter dawn:149020.
./out/Debug/DawnInfo
Toggles
=======
Name: allow_unsafe_apis
Suppresses validation errors on API entry points or parameter combinations
that aren't considered secure yet.
http://crbug.com/1138528
[…]
Adapter
=======
VendorID: 0x106B
Vendor: apple
Architecture: common-3
DeviceID: 0x0000
Name: Apple M1 Pro
Driver description: Metal driver on macOS Version 13.5.1 (Build 22G90)
Adapter Type: discrete GPU
Backend Type: Metal
Power: <undefined>
Features
========
* depth_clip_control
Disable depth clipping of primitives to the clip volume
https://bugs.chromium.org/p/dawn/issues/detail?id=1178
[…]
Adapter Limits
==============
maxTextureDimension1D: 16,384
maxTextureDimension2D: 16,384
[…]
Hier werden nur einige der wichtigsten Highlights behandelt. Eine vollständige Liste der Commits finden Sie hier.
Neues in WebGPU
Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.
Chrome 149–150
Chrome 147–148
Chrome 146
- Unterstützung des WebGPU-Kompatibilitätsmodus unter OpenGL ES 3.1
- Temporäre Anhänge
- WGSL-Erweiterung texture_and_sampler_let
- Dawn-Updates
Chrome 145
- WGSL-Erweiterung subgroup_uniformity
- Experimentelle synchrone Pufferzuordnung in Workern
- Dawn-Updates
Chrome 144
- WGSL-Erweiterung subgroup_id
- WGSL-Erweiterung uniform_buffer_standard_layout
- WebGPU unter Linux
- Schnellere writeBuffer- und writeTexture-Funktionen
- Dawn-Updates
Chrome 143
- Swizzle für Texturkomponenten
- Entfernung der schreibgeschützten Speichertexturverwendung bgra8unorm
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für das Vulkan-Backend
- Dawn-Updates
Chrome 140
- Geräteanfragen nutzen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Einstellung der schreibgeschützten Speichertexturverwendung bgra8unorm
- Entfernung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 139
- Unterstützung für 3D-Texturen für komprimierte BC- und ASTC-Formate
- Neue Funktion „core-features-and-limits“
- Ursprungstest für den WebGPU-Kompatibilitätsmodus
- Dawn-Updates
Chrome 138
- Kurzform für die Verwendung von Puffern als Bindungsressource
- Änderungen der Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- Einstellung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 137
- Verwendung von Texturansichten für die Bindung von externen Texturen
- Kopieren von Puffern ohne Angabe von Offsets und Größe
- WGSL workgroupUniformLoad mit Zeiger auf atomare Werte
- GPUAdapterInfo-Attribut powerPreference
- Entfernung des GPURequestAdapterOptions-Attributs compatibilityMode
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut isFallbackAdapter
- Verbesserungen der Shader-Kompilierungszeit unter D3D12
- Canvas-Bilder speichern und kopieren
- Aufhebung der Einschränkungen des Kompatibilitätsmodus
- Dawn-Updates
Chrome 135
- Erstellung von Pipeline-Layouts mit Null-Bindungsgruppenlayouts zulassen
- Ansichtsfenster dürfen über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Entfernung des Limits für maxInterStageShaderComponents
- Dawn-Updates
Chrome 134
- Verbesserung von Arbeitslasten für maschinelles Lernen mit Untergruppen
- Entfernung der Unterstützung für filterbare Texturtypen vom Typ „float“ als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- Verwendung von VideoFrame displaySize für externe Texturen
- Verarbeitung von Bildern mit nicht standardmäßigen Ausrichtungen mit copyExternalImageToTexture
- Verbesserung der Entwicklerfreundlichkeit
- Aktivierung des Kompatibilitätsmodus mit featureLevel
- Bereinigung experimenteller Untergruppenfunktionen
- Einstellung des Limits für maxInterStageShaderComponents
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Gleitkomma-Texturen
- GPUDevice-Attribut adapterInfo
- Konfiguration des Canvas-Kontexts mit ungültigem Format löst JavaScript-Fehler aus
- Einschränkungen für Sampler für Texturen filtern
- Erweiterte Untergruppenexperimente
- Verbesserung der Entwicklerfreundlichkeit
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Clip-Abstände in WGSL
- GPUCanvasContext getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben
- Integrierte Funktionen für inklusive Scans für Untergruppen
- Experimentelle Unterstützung für Multi-Draw Indirect
- Option für die Shader-Modul-Kompilierung „strict math“
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- Einstellung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 129
- HDR-Unterstützung mit Canvas-Tone Mapping-Modus
- Erweiterte Unterstützung für Untergruppen
- Dawn-Updates
Chrome 128
- Experimente mit Untergruppen
- Einstellung der Tiefenverzerrung für Linien und Punkte
- Ausblenden der Warnung „Nicht erfasster Fehler“ in den Entwicklertools, wenn preventDefault verwendet wird
- WGSL-Interpolation von Sampling und entweder
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehler für Befehlscodierer
- Dawn-Updates
Chrome 126
- Erhöhung des Limits für maxTextureArrayLayers
- Optimierung des Pufferuploads für das Vulkan-Backend
- Verbesserungen der Shader-Kompilierungszeit
- Übermittelte Befehlspuffer müssen eindeutig sein
- Dawn-Updates
Chrome 125
Chrome 124
- Schreibgeschützte und Lese-/Schreib-Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Dawn-Updates
Chrome 123
- Unterstützung für integrierte DP4a-Funktionen in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntax-Zucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Erweiterung der Reichweite mit dem Kompatibilitätsmodus (Funktion in Entwicklung)
- Erhöhung des Limits für maxVertexAttributes
- Dawn-Updates
Chrome 121
- Unterstützung für WebGPU unter Android
- Verwendung von DXC anstelle von FXC für die Shader-Kompilierung unter Windows
- Zeitstempelabfragen in Compute- und Render-Passes
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Speicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Änderungen am Tiefen- und Schablonenstatus
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
Chrome 119
- Filterbare 32-Bit-Gleitkomma-Texturen
- Vertex-Format unorm10-10-10-2
- Texturformat rgb10a2uint
- Dawn-Updates
Chrome 118
- Unterstützung für HTMLImageElement und ImageData in
copyExternalImageToTexture() - Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertexturen
- Dawn-Updates
Chrome 117
- Vertex-Puffer aufheben
- Bindungsgruppe aufheben
- Fehler bei der asynchronen Pipeline-Erstellung unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklerfreundlichkeit
- Caching von Pipelines mit automatisch generiertem Layout
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()zurückgegeben wird - Reibungslose Videowiedergabe, wenn
importExternalTexture()aufgerufen wird - Spezifikationskonformität
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzstrom
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates