GPUDevice

Limited availability

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

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 zugänglich sind.

Ein GPUDevice-Objekt wird über die Methode GPUAdapter.requestDevice() angefordert.

EventTarget GPUDevice

Instanzen Eigenschaften

Erbt Eigenschaften von seinem Elternteil, EventTarget.

adapterInfo Experimentell Schreibgeschützt

Ein GPUAdapterInfo-Objekt, das Informationen zur Identifizierung über den Adapter des Geräts enthält.

features Schreibgeschützt

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

label

Ein String, der eine Bezeichnung liefert, die verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in GPUError-Nachrichten oder Konsolenwarnungen.

limits Schreibgeschützt

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

lost Schreibgeschützt

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

queue Schreibgeschützt

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

Instanzen Methoden

Erbt Methoden von seinem Elternteil, EventTarget.

createBindGroup()

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

createBindGroupLayout()

Erstellt ein GPUBindGroupLayout, das die Struktur und den Zweck von verwandten GPU-Ressourcen, wie z.B. Puffer, die in einer Pipeline verwendet werden, definiert und als Vorlage beim Erstellen von GPUBindGroups verwendet wird.

createBuffer()

Erstellt einen GPUBuffer, in dem Rohdaten gespeichert werden, um sie in GPU-Operationen zu verwenden.

createCommandEncoder()

Erstellt einen GPUCommandEncoder, der zum Codieren von Befehlen verwendet wird, die an die GPU ausgegeben werden sollen.

createComputePipeline()

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

createComputePipelineAsync()

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

createPipelineLayout()

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

createQuerySet()

Erstellt ein GPUQuerySet, das verwendet werden kann, um die Ergebnisse von Abfragen zu Pässen, wie z.B. Okklusions- oder Zeitstempelabfragen, aufzuzeichnen.

createRenderBundleEncoder()

Erstellt einen GPURenderBundleEncoder, der verwendet werden kann, um Bündel von Befehlen vorzuabzeichnen. Diese können in GPURenderPassEncoders über die executeBundles()-Methode wiederverwendet werden, so oft wie erforderlich.

createRenderPipeline()

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

createRenderPipelineAsync()

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

createSampler()

Erstellt einen GPUSampler, der steuert, wie Shader Texturressourcen-Daten transformieren und filtern.

createShaderModule()

Erstellt ein GPUShaderModule aus einem String von WGSL-Quellcode.

createTexture()

Erstellt eine GPUTexture, in der Texturdaten gespeichert werden, um in GPU-Rendering-Operationen verwendet zu werden.

destroy()

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

importExternalTexture()

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

popErrorScope()

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

pushErrorScope()

Legt 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 geworfen wird, der nicht von einem GPU-Fehlerbereich beobachtet 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,
  });

  // …
}

Sehen Sie die einzelnen oben aufgelisteten Mitgliederseiten und die folgenden Demoseiten für viele weitere Beispiele zur Verwendung von GPUDevice:

Spezifikationen

Specification
WebGPU
# gpudevice

Browser-Kompatibilität

Siehe auch