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, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die GPUDevice
-Schnittstelle der WebGPU API repräsentiert ein logisches GPU-Gerät. Dies ist die Hauptschnittstelle, über die die meisten Funktionen von WebGPU genutzt werden.
Ein GPUDevice
-Objekt wird mit der Methode GPUAdapter.requestDevice()
angefordert.
Instanz-Eigenschaften
Erbt Eigenschaften von seinem Elternteil, EventTarget
.
features
Experimentell Nur lesbar-
Ein
GPUSupportedFeatures
-Objekt, das zusätzliche Funktionalitäten beschreibt, die vom Gerät unterstützt werden. label
Experimentell-
Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, beispielsweise in
GPUError
-Meldungen oder Konsolenwarnungen. limits
Experimentell Nur lesbar-
Ein
GPUSupportedLimits
-Objekt, das die vom Gerät unterstützten Grenzen beschreibt. lost
Experimentell Nur lesbar-
Enthält ein
Promise
, das während der gesamten Lebensdauer des Geräts ausstehend bleibt und sich mit einemGPUDeviceLostInfo
-Objekt auflöst, wenn das Gerät verloren geht. queue
Experimentell Nur lesbar-
Gibt die primäre
GPUQueue
für das Gerät zurück.
Instanz-Methoden
Erbt Methoden von seinem Elternteil, EventTarget
.
createBindGroup()
Experimentell-
Erstellt eine
GPUBindGroup
basierend auf einemGPUBindGroupLayout
, das eine Gruppe von Ressourcen definiert, die zusammen gebunden werden und wie diese Ressourcen in Shader-Phasen verwendet werden. createBindGroupLayout()
Experimentell-
Erstellt ein
GPUBindGroupLayout
, das die Struktur und den Zweck von verwandten GPU-Ressourcen wie Buffern definiert, die in einer Pipeline verwendet werden und als Vorlage bei der Erstellung vonGPUBindGroup
s dient. createBuffer()
Experimentell-
Erstellt einen
GPUBuffer
, um Rohdaten für GPU-Operationen zu speichern. createCommandEncoder()
Experimentell-
Erstellt einen
GPUCommandEncoder
, der verwendet wird, um Befehle für die GPU zu kodieren. createComputePipeline()
Experimentell-
Erstellt eine
GPUComputePipeline
, die die Compute-Shader-Phase steuern kann und in einemGPUComputePassEncoder
verwendet werden kann. createComputePipelineAsync()
Experimentell-
Gibt ein
Promise
zurück, das mit einerGPUComputePipeline
erfüllt wird, die die Compute-Shader-Phase steuern kann und in einemGPUComputePassEncoder
verwendet werden kann, sobald die Pipeline verwendet werden kann, ohne dass Verzögerungen auftreten. createPipelineLayout()
Experimentell-
Erstellt ein
GPUPipelineLayout
, das dieGPUBindGroupLayout
s definiert, die von einer Pipeline verwendet werden.GPUBindGroup
s, die während der Befehlskodierung mit der Pipeline verwendet werden, müssen kompatibleGPUBindGroupLayout
s haben. createQuerySet()
Experimentell-
Erstellt ein
GPUQuerySet
, das verwendet werden kann, um die Ergebnisse von Abfragen bei Durchläufen aufzuzeichnen, wie z.B. Occlusion- oder Zeitstempel-Abfragen. createRenderBundleEncoder()
Experimentell-
Erstellt einen
GPURenderBundleEncoder
, der verwendet werden kann, um Bündel von Befehlen vorab aufzuzeichnen. Diese können inGPURenderPassEncoder
s über die MethodeexecuteBundles()
beliebig oft wiederverwendet werden. createRenderPipeline()
Experimentell-
Erstellt eine
GPURenderPipeline
, die die Vertex- und Fragment-Shader-Phasen steuern kann und in einemGPURenderPassEncoder
oderGPURenderBundleEncoder
verwendet werden kann. createRenderPipelineAsync()
Experimentell-
Gibt ein
Promise
zurück, das mit einerGPURenderPipeline
erfüllt wird, die die Vertex- und Fragment-Shader-Phasen steuern kann und in einemGPURenderPassEncoder
oderGPURenderBundleEncoder
verwendet werden kann, sobald die Pipeline verwendet werden kann, ohne dass Verzögerungen auftreten. createSampler()
Experimentell-
Erstellt einen
GPUSampler
, der steuert, wie Shader die Texturnutzungsdaten 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. destroy()
Experimentell-
Zerstört das Gerät und verhindert weitere Operationen darauf.
importExternalTexture()
Experimentell-
Nimmt ein
HTMLVideoElement
als Eingabe und gibt einGPUExternalTexture
-Wrapper-Objekt zurück, das einen Schnappschuss des Videos enthält, der in GPU-Rendering-Operationen verwendet werden kann. popErrorScope()
Experimentell-
Hebt einen bestehenden GPU-Fehlerbereich aus dem Fehlerbereich-Stack und gibt ein
Promise
zurück, das sich auflöst in ein Objekt (GPUInternalError
,GPUOutOfMemoryError
oderGPUValidationError
), das den ersten im Bereich erfassten Fehler beschreibt, odernull
, wenn kein Fehler aufgetreten ist. pushErrorScope()
Experimentell-
Schiebt einen neuen GPU-Fehlerbereich auf den Fehlerbereich-Stack des Geräts, um Fehler eines bestimmten Typs zu erfassen.
Ereignisse
uncapturederror
Experimentell-
Wird ausgelöst, wenn ein Fehler auftritt, der nicht von einem GPU-Fehlerbereich erfasst 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,
});
//...
}
Siehe die oben aufgelisteten Seiten der einzelnen Mitglieder und die folgenden Demo-Seiten für weitere Beispiele zur Nutzung von GPUDevice
:
Spezifikationen
Specification |
---|
WebGPU # gpudevice |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API