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

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

EventTarget GPUDevice

Instanz-Eigenschaften

Erbt Eigenschaften von seinem Eltern-Interface, EventTarget.

adapterInfo Experimentell Schreibgeschützt

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

features Experimentell Schreibgeschützt

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

label Experimentell

Ein String, der eine Bezeichnung bereitstellt, die verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in GPUError-Meldungen oder Konsolenwarnungen.

limits Experimentell Schreibgeschützt

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

lost Experimentell Schreibgeschützt

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

queue Experimentell Schreibgeschützt

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

Instanz-Methoden

Erbt Methoden von seinem Eltern-Interface, EventTarget.

createBindGroup() Experimentell

Erstellt eine GPUBindGroup basierend auf einem GPUBindGroupLayout, das eine Gruppe von zu bindenden Ressourcen und deren Verwendung in Shader-Stufen definiert.

createBindGroupLayout() Experimentell

Erstellt ein GPUBindGroupLayout, das die Struktur und den Zweck von verwandten GPU-Ressourcen wie Puffern 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 zu kodieren, die an die GPU ausgegeben werden sollen.

createComputePipeline() Experimentell

Erstellt eine GPUComputePipeline, die die Compute-Shader-Stufe steuern 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-Stufe steuern kann und in einem GPUComputePassEncoder verwendet werden kann, sobald die Pipeline ohne Verzögerungen verwendet werden kann.

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 in Durchläufen aufzuzeichnen, wie zum Beispiel Okklusions- oder Zeitstempel-Abfragen.

createRenderBundleEncoder() Experimentell

Erstellt einen GPURenderBundleEncoder, der verwendet werden kann, um Bündel von Befehlen im Voraus aufzuzeichnen. Diese können über die Methode executeBundles() in GPURenderPassEncoders beliebig oft erneut verwendet werden.

createRenderPipeline() Experimentell

Erstellt eine GPURenderPipeline, die die Vertex- und Fragment-Shader-Stufen steuern 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-Stufen steuern und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann, sobald die Pipeline ohne Verzögerungen verwendet 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, um Texturdaten zu speichern, 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, der in GPU-Rendering-Operationen verwendet werden kann.

popErrorScope() Experimentell

Nimmt einen bestehenden GPU-Fehlerbereich vom Fehlerbereich-Stack und gibt ein Promise zurück, das zu einem Objekt (GPUInternalError, GPUOutOfMemoryError oder GPUValidationError) aufgelöst wird, 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, 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 beobachtet wurde, um eine Möglichkeit zur Meldung unerwarteter Fehler bereitzustellen. 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 genannten einzelnen Mitgliederseiten und die folgenden Demo-Websites für viele weitere Beispiele der Verwendung von GPUDevice an:

Spezifikationen

Specification
WebGPU
# gpudevice

Browser-Kompatibilität

Siehe auch