2.4 KiB
| id | ticket | title | status | created | completed | ref_decisions | tags | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0101 | real-render-worker-establishment | Remove Immediate Gfx2D and GfxUI Syscall Rendering | done | 2026-06-06 |
|
|
Objective
Make gfx2d.* and gfxui.* syscalls buffer commands only, without mutating the framebuffer immediately.
Background
DEC-0032 requires framebuffer mutation to occur through render submission consumption/publication, not inside VM syscall dispatch. This is required before render can run independently.
Scope
Included
- Remove
hw.gfx_mut().*immediate draw calls from VM dispatch forgfx2dandgfxui. - Add regression tests for
gfx2d.clearandgfx2d.draw_text. - Update tests that assumed immediate pixel mutation.
Excluded
- Do not remove
GfxBridge. - Do not migrate composer in this plan.
- Do not implement worker.
Execution Steps
Step 1 - Remove immediate Game gfx writes
What: Delete direct hw.gfx_mut() rendering in Gfx* syscall handlers.
How: Keep command buffering into gfx2d_commands.
File(s): crates/console/prometeu-system/src/services/vm_runtime/dispatch.rs.
Step 2 - Remove immediate Shell UI writes
What: Delete direct hw.gfx_mut() rendering in GfxUi* syscall handlers.
How: Keep command buffering into gfxui_commands.
File(s): crates/console/prometeu-system/src/services/vm_runtime/dispatch.rs.
Step 3 - Add regression tests
What: Prove syscalls do not affect pixels until publication.
How: Tests for gfx2d.clear and gfx2d.draw_text should inspect command buffers and frame publication.
File(s): crates/console/prometeu-system/src/services/vm_runtime/tests.rs.
Test Requirements
Unit Tests
gfx2d.clearbuffers only.gfx2d.draw_textbuffers only.- Shell UI commands buffer only.
Integration Tests
- Stress cartridge still renders after frame publication.
Manual Verification
rg "gfx_mut\\(\\).*draw|gfx_mut\\(\\).*clear|gfx_mut\\(\\).*fill" dispatch.rsreturns no immediate render calls.
Acceptance Criteria
- Gfx syscalls no longer mutate framebuffer immediately.
- Pixels change only after render submission publication.
- Tests updated to the new contract.
Dependencies
PLN-0100.
Risks
- Debug workflows may have relied on immediate drawing. Tests must make the new frame boundary explicit.