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.
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 einemGPUDeviceLostInfo
-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 einemGPUBindGroupLayout
, 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 vonGPUBindGroup
s 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 einemGPUComputePassEncoder
verwendet werden kann. createComputePipelineAsync()
-
Gibt ein
Promise
zurück, das sich mit einerGPUComputePipeline
erfüllt, die die Compute-Shader-Stufe steuern kann und in einemGPUComputePassEncoder
verwendet werden kann, sobald die Pipeline ohne Verzögerung verwendet werden kann. createPipelineLayout()
-
Erstellt ein
GPUPipelineLayout
, das dieGPUBindGroupLayout
s definiert, die von einer Pipeline verwendet werden.GPUBindGroup
s, die mit der Pipeline während der Befehlscodierung verwendet werden, müssen kompatibleGPUBindGroupLayout
s 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 inGPURenderPassEncoder
s mittels derexecuteBundles()
-Methode wiederverwendet werden, so oft wie nötig. createRenderPipeline()
-
Erstellt eine
GPURenderPipeline
, die die Vertex- und Fragment-Shader-Stufen steuern kann und in einemGPURenderPassEncoder
oderGPURenderBundleEncoder
verwendet werden kann. createRenderPipelineAsync()
-
Gibt ein
Promise
zurück, das sich mit einerGPURenderPipeline
erfüllt, die die Vertex- und Fragment-Shader-Stufen steuern kann und in einemGPURenderPassEncoder
oderGPURenderBundleEncoder
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 einGPUExternalTexture
-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
oderGPUValidationError
) auflöst, das den ersten im Scope erfassten Fehler beschreibt, odernull
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()
undpopErrorScope()
behandelt werden.
Beispiele
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
- Die WebGPU API