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, 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 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 Nur lesbar

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 Nur lesbar

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

lost Experimentell Nur lesbar

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 Nur lesbar

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

BCD tables only load in the browser

Siehe auch