83 lines
2.4 KiB
Markdown
83 lines
2.4 KiB
Markdown
---
|
|
id: PLN-0102
|
|
ticket: real-render-worker-establishment
|
|
title: Introduce Game2DFrameComposer Logical Service
|
|
status: done
|
|
created: 2026-06-06
|
|
completed:
|
|
ref_decisions: [DEC-0032]
|
|
tags: [runtime, composer, game2d, platform]
|
|
---
|
|
|
|
## Objective
|
|
|
|
Introduce `Game2DFrameComposer` as the logical-side service/facade for Game2D frame preparation.
|
|
|
|
## Background
|
|
|
|
`DEC-0032` states that `bind_scene`, `set_camera`, `emit_sprite`, and `close_game2d_packet` are logical frame preparation, not physical backend behavior.
|
|
|
|
## Scope
|
|
|
|
### Included
|
|
|
|
- Define a `Game2DFrameComposer` facade.
|
|
- Move or wrap existing `FrameComposer` behavior under logical-side naming.
|
|
- Migrate composer syscalls to use the facade rather than generic hardware.
|
|
|
|
### Excluded
|
|
|
|
- Do not rewrite scene cache internals.
|
|
- Do not move viewport cache across threads.
|
|
- Do not implement worker.
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1 - Define composer facade
|
|
|
|
**What:** Add `Game2DFrameComposer` trait or service contract.
|
|
**How:** Include `begin_frame`, `bind_scene`, `unbind_scene`, `set_camera`, `emit_sprite`, `close_game2d_packet`, and required read checks.
|
|
**File(s):** `crates/console/prometeu-hal/src/platform.rs` or composer-specific HAL module.
|
|
|
|
### Step 2 - Implement using current composer
|
|
|
|
**What:** Make current local driver composer satisfy the new logical service.
|
|
**How:** Reuse `FrameComposer` implementation under adapter/implementation.
|
|
**File(s):** `crates/console/prometeu-drivers/src/frame_composer.rs`, `crates/console/prometeu-drivers/src/hardware.rs`.
|
|
|
|
### Step 3 - Migrate composer syscalls
|
|
|
|
**What:** Dispatch composer syscalls through `Game2DFrameComposer`.
|
|
**How:** Remove dependency on `HardwareBridge` methods for composer.
|
|
**File(s):** `crates/console/prometeu-system/src/services/vm_runtime/dispatch.rs`.
|
|
|
|
## Test Requirements
|
|
|
|
### Unit Tests
|
|
|
|
- Composer facade closes packets equivalent to previous `FrameComposer`.
|
|
- Invalid scene/bank behavior remains unchanged.
|
|
|
|
### Integration Tests
|
|
|
|
- Existing scene/composer runtime tests pass.
|
|
|
|
### Manual Verification
|
|
|
|
- Composer syscalls no longer require `&mut dyn HardwareBridge`.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] `Game2DFrameComposer` exists as logical service/facade.
|
|
- [ ] Composer syscalls route through it.
|
|
- [ ] Existing Game2D scene rendering remains correct.
|
|
|
|
## Dependencies
|
|
|
|
- `PLN-0098`.
|
|
- `PLN-0101`.
|
|
|
|
## Risks
|
|
|
|
- Scene cache ownership can be accidentally moved too early. Keep cache behavior local while changing the boundary.
|