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.

Das GPUDevice Interface der WebGPU-API repräsentiert ein logisches GPU-Gerät. Dies ist das Hauptinterface, über das die Mehrheit der WebGPU-Funktionalität zugegriffen wird.

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

EventTarget GPUDevice

Instanzeigenschaften

Erbt Eigenschaften von seinem Elternteil, EventTarget.

adapterInfo Schreibgeschützt

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

features Schreibgeschützt

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

label

Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in GPUError-Nachrichten oder Konsolenwarnungen.

limits Schreibgeschützt

Ein GPUSupportedLimits-Objekt, das die Grenzen beschreibt, die von dem Gerät unterstützt werden.

lost Schreibgeschützt

Enthält ein Promise, das während der gesamten Lebensdauer des Geräts ausstehend 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.

Instanzmethoden

Erbt Methoden von seinem Elternteil, EventTarget.

createBindGroup()

Erstellt eine GPUBindGroup basierend auf einem GPUBindGroupLayout, das eine Reihe von Ressourcen definiert, die in einer Gruppe zusammengebunden 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 Buffern definiert, die in einer Pipeline verwendet werden, und wird als Vorlage beim Erstellen von GPUBindGroups verwendet.

createBuffer()

Erstellt einen GPUBuffer, um rohe Daten zu speichern, die in GPU-Operationen verwendet werden.

createCommandEncoder()

Erstellt einen GPUCommandEncoder, der verwendet wird, um Befehle zu codieren, 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 sich mit einer GPUComputePipeline erfüllt, die die Compute-Shader-Stufe steuern kann und in einem GPUComputePassEncoder verwendet werden kann, sobald die Pipeline ohne Verzögerung verwendet werden kann.

createPipelineLayout()

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

createQuerySet()

Erstellt ein GPUQuerySet, das verwendet werden kann, um die Ergebnisse von Anfragen zu Passes aufzuzeichnen, wie z.B. Okklusions- oder Zeitstempelanfragen.

createRenderBundleEncoder()

Erstellt einen GPURenderBundleEncoder, der verwendet werden kann, um Bündel von Befehlen im Voraus zu kodieren. Diese können in GPURenderPassEncoders mittels der executeBundles()-Methode wiederverwendet werden, so oft wie nötig.

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 sich mit einer GPURenderPipeline erfüllt, die die Vertex- und Fragment-Shader-Stufen steuern kann und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann, sobald die Pipeline ohne Verzögerung verwendet werden kann.

createSampler()

Erstellt einen GPUSampler, der steuert, wie Shader Textur-Ressourcendaten transformieren und filtern.

createShaderModule()

Erstellt ein GPUShaderModule aus einem String von WGSL-Quellcode.

createTexture()

Erstellt eine GPUTexture, um Texturdaten zu speichern, die in GPU-Rendering-Operationen verwendet 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 einen Schnappschuss des Videos enthält und in GPU-Rendering-Operationen verwendet werden kann.

popErrorScope()

Entfernt einen bestehenden GPU-Error-Scope aus dem Error-Scope-Stack und gibt ein Promise zurück, das sich zu einem Objekt (GPUInternalError, GPUOutOfMemoryError oder GPUValidationError) auflöst, das den ersten im Scope erfassten Fehler beschreibt, oder null falls kein Fehler aufgetreten ist.

pushErrorScope()

Fügt einen neuen GPU-Error-Scope zum Error-Scope-Stack des Geräts hinzu, damit Sie Fehler eines bestimmten Typs erfassen können.

Ereignisse

uncapturederror

Wird ausgelöst, wenn ein Fehler auftritt, der von einem GPU-Error-Scope nicht 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 sich die einzelnen oben aufgelisteten Mitgliederseiten und die folgenden Demoseiten für viel mehr Beispiele zur Verwendung von GPUDevice an:

Spezifikationen

Specification
WebGPU
# gpudevice

Browser-Kompatibilität

Siehe auch