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 Mehrheit der WebGPU-Funktionalität zugänglich ist.

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

EventTarget GPUDevice

Instanz-Eigenschaften

Erbt Eigenschaften von ihrem Elternteil, EventTarget.

adapterInfo Experimentell Schreibgeschützt

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

features Schreibgeschützt

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

label

Ein String, der ein Label bereitstellt, das 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 aussteht und mit einem GPUDeviceLostInfo-Objekt aufgelöst wird, wenn das Gerät verloren geht.

queue Schreibgeschützt

Gibt die primäre GPUQueue des Geräts zurück.

Instanz-Methoden

Erbt Methoden von ihrem 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 verwandter GPU-Ressourcen wie Puffer definiert, die in einer Pipeline verwendet werden, und als Vorlage beim Erstellen von GPUBindGroups verwendet wird.

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 kodieren, die an die GPU gesendet 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 Blockierung 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 zum Beispiel Frage zu Okklusion oder Zeitstempel.

createRenderBundleEncoder()

Erstellt einen GPURenderBundleEncoder, der verwendet werden kann, um Befehlspakete vorab aufzuzeichnen. Diese können in GPURenderPassEncoders über die Methode executeBundles() mehrfach wiederverwendet werden.

createRenderPipeline()

Erstellt eine GPURenderPipeline, die die Vertex- und Fragment-Shader-Stufen steuern 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 und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann, sobald die Pipeline ohne Blockierung verwendet werden kann.

createSampler()

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

createShaderModule()

Erstellt ein GPUShaderModule aus einem String von WGSL-Quellcode.

createTexture()

Erstellt eine GPUTexture, in der Texturdaten gespeichert werden, um sie in GPU-Renderoperationen zu verwenden.

destroy()

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

importExternalTexture()

Nimmt ein HTMLVideoElement als Eingabe und gibt ein GPUExternalTexture-Wrapperobjekt zurück, das ein Schnappschuss des Videos enthält, das in GPU-Renderoperationen verwendet werden kann.

popErrorScope()

Entfernt einen vorhandenen GPU-Fehlerbereich aus dem Fehlerbereichs-Stapel und gibt ein Promise zurück, das zu einem Objekt (GPUInternalError, GPUOutOfMemoryError oder GPUValidationError) wird, das den ersten in diesem Bereich erfassten Fehler beschreibt, oder null, wenn kein Fehler aufgetreten ist.

pushErrorScope()

Fügt einen neuen GPU-Fehlerbereich zum Fehlerbereichs-Stapel des Geräts hinzu, sodass Sie Fehler eines bestimmten Typs erfassen können.

Ereignisse

uncapturederror Experimentell

Wird ausgelöst, wenn ein Fehler auftritt, der nicht von einem GPU-Fehlerbereich erfasst wurde, um eine Möglichkeit zur Meldung unerwarteter Fehler zu bieten. 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 aufgeführten einzelnen Mitgliederseiten und die folgenden Demo-Sites für viele weitere Beispiele zur Verwendung von GPUDevice:

Spezifikationen

Specification
WebGPU
# gpudevice

Browser-Kompatibilität

Siehe auch