SuperAPI AI 工具集

webgpu-agents-pipeline-orchestrator

编程与开发

查看项目

更新于 10-15 22:18

技能介绍

用途:在端到端构建 WebGPU 应用、搭建 adapter 到 device 到 pipeline 再到资源的完整链路,或需要判断该用哪个 WebGPU 细分技能时使用。该技能本身是一个编排层(orchestrator),负责给出正确的搭建顺序,并把每一步路由到对应的 33 个细分 WebGPU 技能。

主要能力:提供规范化的 15 步搭建序列,必须严格按顺序执行,每一步依赖其上所有步骤。第 1 至 5 步(守卫 navigator.gpu 与安全上下文、requestAdapter 并判空、读取 adapter.features/limits 构建 requiredFeatures/requiredLimits、requestDevice 并在任何资源之前注册 device.lost、读取 device.queue)每应用只跑一次;第 7 至 12 步在加载时跑一次;第 13 至 15 步每帧用新的 encoder 执行。提供决策树区分三条路径:渲染路径(画到 canvas)、计算路径(GPGPU 无 canvas)、以及先计算后渲染(同一 encoder 内,依靠同一次 submit 内的顺序保证计算写入先于渲染读取)。还说明 layout 用 "auto" 还是显式 GPUPipelineLayout 的取舍,以及按资源角色选择 buffer usage 标志。

核心模式:创建任何资源前先协商 limits 与 features(requiredFeatures: adapter.features.has("shader-f16") ? ["shader-f16"] : []);先建 bind group layout 再建 pipeline;WGSL 的 @group/@binding、layout 条目、visibility 与格式三处必须完全一致;MAP_READ 只能与 COPY_DST 组合,GPU 到 CPU 回读必须用独立的 MAP_READ | COPY_DST staging buffer 配合 copyBufferToBuffer;第 4 步就要注册 device.lost.then(...),并用 pushErrorScope("validation")/popErrorScope() 定位失败;为每个对象打 label,每帧新建 encoder,context.getCurrentTexture() 每帧调用一次且不缓存。

适用场景:WebGPU 渲染与计算应用的初始化与管线搭建、跨管线共享 bind group 时的布局规划、buffer 用途标志选择、以及在 33 个细分技能间做任务路由。

限制与警告:不得在完成第 1 至 4 步前创建资源;不得在 bind group layout 存在前调用 createRenderPipeline 或 createComputePipeline;不得让 WGSL 与 layout 的绑定号、可见性、格式不一致;不得给 MAP_READ buffer 加 STORAGE/UNIFORM/VERTEX;不得跳过 device.lost 注册;不得让描述符缺少 label;不得缓存 getCurrentTexture() 或复用 GPUCommandBuffer。设备丢失后的恢复要针对新 device 重新执行第 1 至 15 步,资源绑定于创建它的 device,禁止静默重试循环。参考文件包括 references/methods.md、references/examples.md、references/anti-patterns.md。关于具体收费、价格或平台差异,资料未提供。