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.
adapterInfoSchreibgeschützt-
Ein
GPUAdapterInfo-Objekt, das identifizierende Informationen über den Adapter des Geräts enthält. featuresSchreibgeschü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. limitsSchreibgeschützt-
Ein
GPUSupportedLimits-Objekt, das die Grenzen beschreibt, die von dem Gerät unterstützt werden. lostSchreibgeschü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. queueSchreibgeschützt-
Gibt 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
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
Loading…
Siehe auch
- Die WebGPU API