Files
workinf_Blender_Wasm/docs/tasks/WBV2-P1424-001-compute-ssbo/CS01.md
mes123456 f3e21c6b98
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore: checkpoint web Blender migration source, tools and docs
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>
2026-11-10 11:18:01 +08:00

53 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 类型均已支持。
## 实现步骤
1. 保留直接 dispatch 及零 workgroup 原生语义,沿 DrawCommand 的 barrier 调用完成真实业务接线。
2. 为 SHADER_STORAGE、BUFFER_UPDATE、VERTEX_ATTRIB_ARRAY、ELEMENT_ARRAY、COMMAND、UNIFORM 等实际枚举建立生产者/消费者映射;执行时读取 GPU_state 相关头文件确认名称与语义。
3. 对已实现的同步 buffer 路径,明确何时完成 WebGPU 提交、映射、原生 commit 及 WebGL upload;仅在这些条件成立时完成对应 barrier。
4. 混合 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 仅显示。