GPUDevice

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 vor der Verwendung auf produktiven Webseiten.

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

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die GPUDevice-Schnittstelle der WebGPU API repräsentiert ein logisches GPU-Gerät. Dies ist die Hauptschnittstelle, über die die meisten Funktionen von WebGPU genutzt werden.

Ein GPUDevice-Objekt wird mit der Methode GPUAdapter.requestDevice() angefordert.

EventTarget GPUDevice

Instanz-Eigenschaften

Erbt Eigenschaften von seinem Elternteil, EventTarget.

features Experimentell Schreibgeschützt

Ein GPUSupportedFeatures-Objekt, das zusätzliche Funktionalitäten beschreibt, die vom Gerät unterstützt werden.

label Experimentell

Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.

limits Experimentell Schreibgeschützt

Ein GPUSupportedLimits-Objekt, das die vom Gerät unterstützten Grenzen beschreibt.

lost Experimentell Schreibgeschützt

Enthält ein Promise, das während der gesamten Lebensdauer des Geräts ausstehend bleibt und sich mit einem GPUDeviceLostInfo-Objekt auflöst, wenn das Gerät verloren geht.

queue Experimentell Schreibgeschützt

Gibt die primäre GPUQueue für das Gerät zurück.

Instanz-Methoden

Erbt Methoden von seinem Elternteil, EventTarget.

createBindGroup() Experimentell

Erstellt eine GPUBindGroup basierend auf einem GPUBindGroupLayout, das eine Gruppe von Ressourcen definiert, die zusammen gebunden werden und wie diese Ressourcen in Shader-Phasen verwendet werden.

createBindGroupLayout() Experimentell

Erstellt ein GPUBindGroupLayout, das die Struktur und den Zweck von verwandten GPU-Ressourcen wie Buffern definiert, die in einer Pipeline verwendet werden und als Vorlage bei der Erstellung von GPUBindGroups dient.

createBuffer() Experimentell

Erstellt einen GPUBuffer, um Rohdaten für GPU-Operationen zu speichern.

createCommandEncoder() Experimentell

Erstellt einen GPUCommandEncoder, der verwendet wird, um Befehle für die GPU zu kodieren.

createComputePipeline() Experimentell

Erstellt eine GPUComputePipeline, die die Compute-Shader-Phase steuern kann und in einem GPUComputePassEncoder verwendet werden kann.

createComputePipelineAsync() Experimentell

Gibt ein Promise zurück, das mit einer GPUComputePipeline erfüllt wird, die die Compute-Shader-Phase steuern kann und in einem GPUComputePassEncoder verwendet werden kann, sobald die Pipeline verwendet werden kann, ohne dass Verzögerungen auftreten.

createPipelineLayout() Experimentell

Erstellt ein GPUPipelineLayout, das die GPUBindGroupLayouts definiert, die von einer Pipeline verwendet werden. GPUBindGroups, die während der Befehlskodierung mit der Pipeline verwendet werden, müssen kompatible GPUBindGroupLayouts haben.

createQuerySet() Experimentell

Erstellt ein GPUQuerySet, das verwendet werden kann, um die Ergebnisse von Abfragen bei Durchläufen aufzuzeichnen, wie z.B. Occlusion- oder Zeitstempel-Abfragen.

createRenderBundleEncoder() Experimentell

Erstellt einen GPURenderBundleEncoder, der verwendet werden kann, um Bündel von Befehlen vorab aufzuzeichnen. Diese können in GPURenderPassEncoders über die Methode executeBundles() beliebig oft wiederverwendet werden.

createRenderPipeline() Experimentell

Erstellt eine GPURenderPipeline, die die Vertex- und Fragment-Shader-Phasen steuern kann und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann.

createRenderPipelineAsync() Experimentell

Gibt ein Promise zurück, das mit einer GPURenderPipeline erfüllt wird, die die Vertex- und Fragment-Shader-Phasen steuern kann und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann, sobald die Pipeline verwendet werden kann, ohne dass Verzögerungen auftreten.

createSampler() Experimentell

Erstellt einen GPUSampler, der steuert, wie Shader die Texturnutzungsdaten transformieren und filtern.

createShaderModule() Experimentell

Erstellt ein GPUShaderModule aus einem String von WGSL-Quellcode.

createTexture() Experimentell

Erstellt eine GPUTexture, um Texturdaten zu speichern, die in GPU-Rendering-Operationen verwendet werden.

destroy() Experimentell

Zerstört das Gerät und verhindert weitere Operationen darauf.

importExternalTexture() Experimentell

Nimmt ein HTMLVideoElement als Eingabe und gibt ein GPUExternalTexture-Wrapper-Objekt zurück, das einen Schnappschuss des Videos enthält, der in GPU-Rendering-Operationen verwendet werden kann.

popErrorScope() Experimentell

Hebt einen bestehenden GPU-Fehlerbereich aus dem Fehlerbereich-Stack und gibt ein Promise zurück, das sich auflöst in ein Objekt (GPUInternalError, GPUOutOfMemoryError oder GPUValidationError), das den ersten im Bereich erfassten Fehler beschreibt, oder null, wenn kein Fehler aufgetreten ist.

pushErrorScope() Experimentell

Schiebt einen neuen GPU-Fehlerbereich auf den Fehlerbereich-Stack des Geräts, um Fehler eines bestimmten Typs zu erfassen.

Ereignisse

uncapturederror Experimentell

Wird ausgelöst, wenn ein Fehler auftritt, der nicht von einem GPU-Fehlerbereich erfasst wurde, um eine Möglichkeit zu bieten, unerwartete Fehler zu melden. Bekannte Fehlerfälle sollten mit pushErrorScope() und popErrorScope() behandelt werden.

Beispiele

js
async function init() {
  if (!navigator.gpu) {
    throw Error("WebGPU not supported.");
  }

  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    throw Error("Couldn't request WebGPU adapter.");
  }

  const device = await adapter.requestDevice();

  const shaderModule = device.createShaderModule({
    code: shaders,
  });

  //...
}

Siehe die oben aufgelisteten Seiten der einzelnen Mitglieder und die folgenden Demo-Seiten für weitere Beispiele zur Nutzung von GPUDevice:

Spezifikationen

Specification
WebGPU
# gpudevice

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
GPUDevice
Experimental
adapterInfo
Experimental
createBindGroup
Experimental
createBindGroupLayout
Experimental
read-write and read-only storageTexture.access
Experimental
rgb10a2uint texture format
Experimental
createBuffer
Experimental
createCommandEncoder
Experimental
createComputePipeline
Experimental
entryPoint properties are optional for determined default compute shader entry points.
Experimental
createComputePipelineAsync
Experimental
entryPoint properties are optional for determined default compute shader entry points.
Experimental
createPipelineLayout
Experimental
createQuerySet
Experimental
Create timestamp queryset types
Experimental
createRenderBundleEncoder
Experimental
createRenderPipeline
Experimental
Dual-source blending: src1, one-minus-src1, src1-alpha, and one-minus-src1-alpha blend factors.
Experimental
depthCompare and depthWriteEnabled properties are optional when not needed (for example, formats without depth).
Experimental
entryPoint properties are optional for determined default fragment and vertex shader entry points.
Experimental
rgb10a2uint texture format
Experimental
Validates that depthBias, depthBiasSlopeScale, and depthBiasClamp must be 0 for line and point topologies.
Experimental
unorm10-10-10-2 vertex format
Experimental
createRenderPipelineAsync
Experimental
Dual-source blending: src1, one-minus-src1, src1-alpha, and one-minus-src1-alpha blend factors.
Experimental
depthCompare and depthWriteEnabled properties are optional when not needed (for example, formats without depth).
Experimental
entryPoint properties are optional for determined default fragment and vertex shader entry points.
Experimental
rgb10a2uint texture format
Experimental
Validates that depthBias, depthBiasSlopeScale, and depthBiasClamp must be 0 for line and point topologies.
Experimental
unorm10-10-10-2 vertex format
Experimental
createSampler
Experimental
createShaderModule
Experimental
createTexture
Experimental
rgb10a2uint texture format
Experimental
destroy
Experimental
features
Experimental
importExternalTexture
Experimental
display-p3 color space
Experimental
VideoFrame object as source
Experimental
label
Experimental
limits
Experimental
lost
Experimental
popErrorScope
Experimental
pushErrorScope
Experimental
queue
Experimental
uncapturederror event
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

Siehe auch