Files
workinf_Blender_Wasm/docs/tasks/WBV2-P1424-001-compute-ssbo/CS10.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

54 lines
3.2 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.
# CS10:取消、上下文销毁与设备恢复
- queueTask: WBV2-P1424-001
- parentTask: WBV2-P1424-000
- packageStatus: planned
- dependsOn: CS03, CS08, CS09
- validation: NOT_RUN;acceptance: NOT_CLAIMED
## 业务与交付
主应用停止任务/替换文件/销毁区域/重启 Worker/丢失 GPU → 安全回收 → 下一轮原生业务
跨层生命周期实现和结构化失败事件;可继续下一次操作,晚结果不污染新 Main/新 context。
## 最小输入与源码依据
- `web/app/src/engine-client/gpu-compute-host.ts`
- `web/app/src/workers/gpu-compute.worker.ts`
- `web/protocol/gpu-compute.ts`
- `web/app/src/workers/web-engine.worker.ts`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_shader.cc`
- `blender-5.2.0/source/blender/gpu/webgl/webgl_backend.cc`
- host 已有 Atomics.wait、超时、取消和 broker terminate;worker 已有 device.lost 与 owner release。
- 需将 native owner 提交、device 缓存及主应用模块销毁作为同一生命周期处理,已有 handler 不等于整链已完成。
## 实现步骤
1. 统一 request/session/context/device generation;对每次结果发布及 owner commit 检查当前代数。
2. 销毁/取消先使请求不可提交,再回收 pipeline、staging、buffers/textures 和 broker;保证 serial 队列等待者被唤醒。
3. device loss 后保留最后 coherent 原生数据,创建新 device 时从原生版本重建资源;未发布的 GPU-only 数据标记需要重新生产。
4. 为原生 C++/Python/Worker/main UI 设置一致错误边界,防止异常越过未处理的 ABI 边界或静默吞掉业务失败。
## 失败边界
取消成功不得更新资源版本或 Main;不自动重放有副作用的业务操作。
发生阻塞时记录具体业务、原生函数/create-info、producer/consumer 和下一修复动作;保留既有产物,继续无此依赖的实现卡,不用缺失证据作为实现阻塞。
## 延后的用户场景(当前不执行)
- 编译/dispatch/readback/commit 各阶段取消
- 文件替换后晚结果
- 设备丢失、释放次序、Worker 重启
- 超时后重试
没有在本次拆解中创建或运行测试 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 仅显示。