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.

Das GPUDevice-Interface der WebGPU API repräsentiert ein logisches GPU-Gerät. Dies ist das Hauptinterface, über das der Großteil der WebGPU-Funktionalität zugänglich ist.

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

EventTarget GPUDevice

Instanzeigenschaften

Erbt Eigenschaften von seinem Elternteil, EventTarget.

adapterInfo Experimentell Schreibgeschützt

Ein GPUAdapterInfo-Objekt, das identifizierende Informationen über den Adapter, von dem das Gerät stammt, enthält.

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 eine Bezeichnung bereitstellt, die 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 Limits 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.

Instanzmethoden

Erbt Methoden von seinem Elternteil, EventTarget.

createBindGroup() Experimentell

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

createBindGroupLayout() Experimentell

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

createBuffer() Experimentell

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

createCommandEncoder() Experimentell

Erstellt einen GPUCommandEncoder, der verwendet wird, um Befehle zu kodieren, die an die GPU übermittelt werden sollen.

createComputePipeline() Experimentell

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

createComputePipelineAsync() Experimentell

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

createPipelineLayout() Experimentell

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

createQuerySet() Experimentell

Erstellt ein GPUQuerySet, das verwendet werden kann, um die Ergebnisse von Abfragen zu Aufträgen aufzuzeichnen, wie zum Beispiel Occlusion- oder Zeitstempelabfragen.

createRenderBundleEncoder() Experimentell

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

createRenderPipeline() Experimentell

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

createRenderPipelineAsync() Experimentell

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

createSampler() Experimentell

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

createShaderModule() Experimentell

Erstellt ein GPUShaderModule aus einem String von WGSL-Quellcode.

createTexture() Experimentell

Erstellt eine GPUTexture, in der Texturdaten gespeichert werden, die in GPU-Rendering-Operationen verwendet werden sollen.

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 und in GPU-Rendering-Operationen verwendet werden kann.

popErrorScope() Experimentell

Entfernt einen bestehenden GPU-Fehlerbereich aus dem Fehlerbereichs-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() Experimentell

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

Ereignisse

uncapturederror Experimentell

Wird ausgelöst, wenn ein Fehler geworfen wird, der nicht von einem GPU-Fehlerbereich beobachtet wurde, um eine Möglichkeit zur Berichterstattung über unerwartete 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,
  });

  // …
}

Sehen Sie sich die oben aufgeführten individuellen Mitgliedsseiten und die folgenden Demoseiten für viele weitere Beispiele zur Nutzung von GPUDevice an:

Spezifikationen

Specification
WebGPU
# gpudevice

Browser-Kompatibilität

Siehe auch