GPUDevice: createComputePipelineAsync() Methode
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 createComputePipelineAsync()
Methode der GPUDevice
Schnittstelle gibt ein Promise
zurück, das mit einer GPUComputePipeline
erfüllt wird. Diese Pipeline kann die Berechnungs-Shader-Stufe steuern und in einem GPUComputePassEncoder
verwendet werden, sobald die Pipeline ohne Verzögerungen genutzt werden kann.
Hinweis: Es ist im Allgemeinen vorzuziehen, diese Methode gegenüber GPUDevice.createComputePipeline()
zu verwenden, wann immer es möglich ist, da sie verhindert, dass die Ausführung von GPU-Operationen durch die Pipeline-Kompilierung blockiert wird.
Syntax
createComputePipeline(descriptor)
Parameter
descriptor
-
Siehe die Definition des Deskriptors für die Methode
GPUDevice.createComputePipeline()
.
Rückgabewert
Ein Promise
, das mit einer GPUComputePipeline
Objektinstanz erfüllt wird, wenn die erstellte Pipeline bereit ist, ohne zusätzliche Verzögerung verwendet zu werden.
Validierung
Wenn die Pipeline-Erstellung fehlschlägt und die resultierende Pipeline dadurch ungültig wird, wird das zurückgegebene Promise mit einem GPUPipelineError
abgelehnt:
- Wenn dies auf einen internen Fehler zurückzuführen ist, hat der
GPUPipelineError
einenreason
von"internal"
. - Wenn dies auf einen Validierungsfehler zurückzuführen ist, hat der
GPUPipelineError
einenreason
von"validation"
.
Ein Validierungsfehler kann auftreten, wenn eine der folgenden Bedingungen nicht erfüllt ist:
- Die im
module
verwendete Arbeitsgruppenspeichergröße, die innerhalb dercompute
-Eigenschaft referenziert wird, ist kleiner oder gleich demmaxComputeWorkgroupStorageSize
Limit desGPUDevice
. - Das
module
verwendet eine Anzahl von Berechnungsaufrufen pro Arbeitsgruppe, die kleiner oder gleich demmaxComputeInvocationsPerWorkgroup
Limit desGPUDevice
ist. - Die Arbeitsgruppengröße des
module
ist kleiner oder gleich dem entsprechendenmaxComputeWorkgroupSizeX
,maxComputeWorkgroupSizeY
odermaxComputeWorkgroupSizeZ
Limit desGPUDevice
. - Wenn die
entryPoint
-Eigenschaft weggelassen wird, enthält der Shader-Code eine einzelne Berechnungs-Shader-Einstiegspunkt-Funktion, die der Browser als Standard-Einstiegspunkt verwenden kann.
Beispiele
Hinweis: Die WebGPU-Beispiele enthalten viele weitere Beispiele.
Einfaches Beispiel
Das folgende Beispiel zeigt einen Prozess von:
- Erstellen eines Bind-Gruppenlayouts mit
GPUDevice.createBindGroupLayout()
. - Einfügen des
bindGroupLayout
inGPUDevice.createPipelineLayout()
, um einGPUPipelineLayout
zu erstellen. - Sofortige Verwendung dieses Wertes in einem
createComputePipelineAsync()
Aufruf zur Erstellung einerGPUComputePipeline
.
async function init() {
// ...
const bindGroupLayout = device.createBindGroupLayout({
entries: [
{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
buffer: {
type: "storage",
},
},
],
});
const computePipeline = await device.createComputePipelineAsync({
layout: device.createPipelineLayout({
bindGroupLayouts: [bindGroupLayout],
}),
compute: {
module: shaderModule,
entryPoint: "main",
},
});
// ...
}
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createcomputepipelineasync |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API