Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DasGPUDevice Interface derWebGPU-API repräsentiert ein logisches GPU-Gerät. Dies ist das Hauptinterface, über das die Mehrheit der WebGPU-Funktionalität zugegriffen wird.
EinGPUDevice-Objekt wird mit der MethodeGPUAdapter.requestDevice() angefordert.
In diesem Artikel
Instanzeigenschaften
Erbt Eigenschaften von seinem Elternteil,EventTarget.
adapterInfoSchreibgeschütztEin
GPUAdapterInfo-Objekt, das identifizierende Informationen über den Adapter des Geräts enthält.featuresSchreibgeschütztEin
GPUSupportedFeatures-Objekt, das zusätzliche Funktionalität beschreibt, die vom Gerät unterstützt wird.labelEin String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError-Nachrichten oder Konsolenwarnungen.limitsSchreibgeschütztEin
GPUSupportedLimits-Objekt, das die Grenzen beschreibt, die von dem Gerät unterstützt werden.lostSchreibgeschütztEnthä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.queueSchreibgeschütztGibt die primäre
GPUQueuefür das Gerät zurück.
Instanzmethoden
Erbt Methoden von seinem Elternteil,EventTarget.
createBindGroup()Erstellt eine
GPUBindGroupbasierend 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 vonGPUBindGroups 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 einemGPUComputePassEncoderverwendet werden kann.createComputePipelineAsync()Gibt ein
Promisezurück, das sich mit einerGPUComputePipelineerfüllt, die die Compute-Shader-Stufe steuern kann und in einemGPUComputePassEncoderverwendet werden kann, sobald die Pipeline ohne Verzögerung verwendet werden kann.createPipelineLayout()Erstellt ein
GPUPipelineLayout, das dieGPUBindGroupLayouts definiert, die von einer Pipeline verwendet werden.GPUBindGroups, die mit der Pipeline während der Befehlscodierung verwendet werden, müssen kompatibleGPUBindGroupLayouts 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 inGPURenderPassEncoders 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 einemGPURenderPassEncoderoderGPURenderBundleEncoderverwendet werden kann.createRenderPipelineAsync()Gibt ein
Promisezurück, das sich mit einerGPURenderPipelineerfüllt, die die Vertex- und Fragment-Shader-Stufen steuern kann und in einemGPURenderPassEncoderoderGPURenderBundleEncoderverwendet 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
GPUShaderModuleaus 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
HTMLVideoElementals 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
Promisezurück, das sich zu einem Objekt (GPUInternalError,GPUOutOfMemoryErroroderGPUValidationError) auflöst, das den ersten im Scope erfassten Fehler beschreibt, odernullfalls 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
uncapturederrorWird 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 vonGPUDevice an:
Spezifikationen
| Specification |
|---|
| WebGPU> # gpudevice> |
Browser-Kompatibilität
Siehe auch
- DieWebGPU API