GPUDevice: createComputePipelineAsync() Methode
        
        
          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.
Die createComputePipelineAsync() Methode des GPUDevice Interfaces gibt ein Promise zurück, das mit einem GPUComputePipeline erfüllt wird. Diese kann die Compute-Shader-Stufe steuern und in einem GPUComputePassEncoder verwendet werden, sobald die Pipeline ohne Blockierungen einsatzbereit ist.
Hinweis:
Es ist in der Regel vorzuziehen, diese Methode anstelle von GPUDevice.createComputePipeline() zu verwenden, wann immer dies möglich ist, da sie verhindert, dass die Ausführung der GPU-Operationen durch die Pipeline-Kompilierung blockiert wird.
Syntax
createComputePipelineAsync(descriptor)
Parameter
- descriptor
- 
Siehe die Descriptor-Definition für die Methode GPUDevice.createComputePipeline().
Rückgabewert
Ein Promise, das mit einer GPUComputePipeline Objektinstanz erfüllt wird, wenn die erstellte Pipeline einsatzbereit ist, ohne zusätzliche Verzögerungen.
Validierung
Wenn die Pipelinenerstellung 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 GPUPipelineErroreinenreasonvon"internal".
- Wenn dies auf einen Validierungsfehler zurückzuführen ist, hat der GPUPipelineErroreinenreasonvon"validation".
Ein Validierungsfehler kann auftreten, wenn eines der folgenden Dinge nicht zutrifft:
- Die von dem im compute-Eigenschaft referenziertenmoduleverwendete Arbeitsgruppenspeichergröße ist kleiner oder gleich demmaxComputeWorkgroupStorageSize- Limit desGPUDevice.
- Das moduleverwendet eine Anzahl von Compute-Aufrufen pro Arbeitsgruppe, die kleiner oder gleich demmaxComputeInvocationsPerWorkgroup- Limit desGPUDeviceist.
- Die Arbeitsgruppengröße des moduleist kleiner oder gleich dem entsprechendenmaxComputeWorkgroupSizeX,maxComputeWorkgroupSizeYodermaxComputeWorkgroupSizeZ- Limit desGPUDevice.
- Wenn die entryPoint-Eigenschaft weggelassen wird, enthält der Shader-Code eine einzelne Compute-Shader-Einstiegspunktfunktion, die der Browser als Standard-Einstiegspunkt verwenden kann.
Beispiele
Hinweis: Die WebGPU-Beispiele bieten viele weitere Beispiele.
Einfaches Beispiel
Das folgende Beispiel zeigt einen Prozess:
- Erstellen eines Bind-Gruppen-Layouts mit GPUDevice.createBindGroupLayout().
- Einspeisen des bindGroupLayoutinGPUDevice.createPipelineLayout(), um einGPUPipelineLayoutzu erstellen.
- Unmittelbare Nutzung dieses Werts in einem createComputePipelineAsync()Aufruf, um eineGPUComputePipelinezu erstellen.
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
Loading…
Siehe auch
- Die WebGPU API