Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer, web workflow engine and protocol, tooling, docs and task records. Large generated evidence, user-testing archives, build snapshots and imported test assets remain untracked. Co-Authored-By: Claude Code <noreply@anthropic.com>
3.4 KiB
CS01:原生 dispatch 与缓冲区屏障闭环
- queueTask: WBV2-P1424-001
- parentTask: WBV2-P1424-000
- packageStatus: planned
- dependsOn: 无;承接已有实现
- validation: NOT_RUN;acceptance: NOT_CLAIMED
业务与交付
原生 Draw Pass → GPU_compute_dispatch → WebGPU → 原生缓冲区 → GPU_memory_barrier → 后续读取/绘制
原生 buffer compute 后接 buffer barrier 的生产实现;附支持位表、资源版本流转和错误传播,不改全局功能完成标记。
最小输入与源码依据
-
blender-5.2.0/source/blender/gpu/intern/gpu_compute.cc -
blender-5.2.0/source/blender/draw/intern/draw_command.cc -
blender-5.2.0/source/blender/gpu/webgl/webgl_backend.cc -
blender-5.2.0/source/blender/gpu/webgl/webgl_shader.cc -
web/app/src/workers/gpu-compute.worker.ts -
webgl_backend.cc:1484 已将直接 dispatch 接到 webgl_compute_dispatch。
-
webgl_backend.cc:858 的 issue_barrier 仍统一拒绝 shader memory barriers;draw_command.cc:293 直接调用 GPU_memory_barrier。
-
当前 dispatch 在 Worker 全量 readback 后返回,尚不能据此宣称所有 barrier 类型均已支持。
实现步骤
- 保留直接 dispatch 及零 workgroup 原生语义,沿 DrawCommand 的 barrier 调用完成真实业务接线。
- 为 SHADER_STORAGE、BUFFER_UPDATE、VERTEX_ATTRIB_ARRAY、ELEMENT_ARRAY、COMMAND、UNIFORM 等实际枚举建立生产者/消费者映射;执行时读取 GPU_state 相关头文件确认名称与语义。
- 对已实现的同步 buffer 路径,明确何时完成 WebGPU 提交、映射、原生 commit 及 WebGL upload;仅在这些条件成立时完成对应 barrier。
- 混合 bitmask 逐位处理;texture/image/framebuffer 屏障留给 CS08,未知标志保持明确失败,不能一次清空所有 guard。
失败边界
屏障只有在对应生产者写入已提交、消费者缓存已同步时才可结束;不能用空函数冒充实现。
发生阻塞时记录具体业务、原生函数/create-info、producer/consumer 和下一修复动作;保留既有产物,继续无此依赖的实现卡,不用缺失证据作为实现阻塞。
延后的用户场景(当前不执行)
- 连续两次 dispatch 的 RAW/WAW 依赖
- 写 VBO 后原生 draw
- 零 workgroup、未知/混合 barrier 位、失败后旧资源保持
没有在本次拆解中创建或运行测试 fixture。原生 shader、现有模板和真实业务数据是实现输入;需要新增用户使用 fixture 时在全项目实现完成后安排。
交接
每次报告填写:实际 workflow/route、源码函数与修改、仍未实现接口、产物元数据(仅生成时)、失败/no-mutation 策略、implementation 状态、validation=NOT_RUN、acceptance=NOT_CLAIMED、下一实现动作。记录 unitCount/verifiedUnits/unverifiedUnits/sourceTreeSha256 的来源;未绑定/未验证不增记覆盖。
执行约束:本卡属于 WBV2-P1424-001 / parent WBV2-P1424-000,nextTask=null 保持不变。全部功能实现前不执行测试、回归、冒烟、浏览器验收、类型/语法/上下文检查或证据审计。仅为产物生成进行必要增量编译。源码检索使用 tools/web/search-wbv2-batch-source.mjs 的精确 --source/--unit;GLSL fixture 只读取本卡列出的原文件。不加载完整专项规划、历史日志或源码 inventory。JS 仅承担浏览器 API/传输;几何算法仍使用 OCCT 出口,Three.js 仅显示。