mirror of
https://github.com/sal063/AC6_recomp
synced 2026-07-10 15:14:19 -04:00
5.7 KiB
5.7 KiB
Roadmap
- Milestone 1: Lock down capture analysis by preserving replay-shaped commands inside each observed pass, then expose counts in debug UI.
- Milestone 2: Introduce a backend-agnostic replay IR that converts pass commands into explicit draw/clear/resolve execution packets.
- Milestone 3: Implement the real D3D12 backend path first: device, queue, allocators, fences, frame slots, and present.
- Milestone 4: Add guest-to-host resource translation for RTs, depth, textures, vertex/index buffers, and fetch constants.
- Milestone 5: Add pipeline/shader translation and PSO caching, then target first visible native output from one selected pass.
- Milestone 6: Add parity validation mode, capture-based comparisons, and rollout gates for bootstrap -> scene_submission -> parity_validation -> shipping.
Completed
- Milestone 1 is complete.
- Milestone 2 is now in place at the data-model level.
- Milestone 3 is complete with real D3D12 backend bring-up.
- Milestone 4 is complete with minimal guest-to-host resource translation maps.
- Milestone 5 is complete with pipeline/shader caching stubs.
- Milestone 6 is complete with parity validation loops and feature-level gates implemented.
Work Completed
- Added a backend-agnostic observed command model with
ObservedCommandTypeandObservedCommandDescinac6_render_frontend.h. - Extended each observed pass to retain its ordered command list in
ac6_render_frontend.h. - Updated frontend capture processing to materialize per-command draw, clear, and resolve records while preserving pass grouping in
ac6_render_frontend.cpp. - Added
total_command_countto the frontend summary so the runtime can report more than just pass counts. - Wired the frontend summary into runtime status in
ac6_native_graphics.handac6_native_graphics.cpp. - Surfaced frontend pass/command counts in
ac6_native_graphics_overlay.cpp. - Added a new replay IR layer in
replay_ir.handreplay_ir.cpp. - Introduced
ReplayPassRole,ReplayCommandDesc,ReplayPassDesc,ReplayFrameSummary, andReplayFrame. - Added
ReplayIrBuilderso the renderer can build a replay frame from frontend passes plus the frame plan. - Added a new execution-plan layer in
execution_plan.handexecution_plan.cpp. - Introduced
ExecutionCommandCategory,ExecutionCommandPacket,ExecutionResourceRequirements,ExecutionPassPacket,ExecutionFrameSummary, andExecutionFramePlan. - Added
ExecutionPlanBuilderso the renderer can derive backend-ready pass packets fromReplayFrameplus frame-plan hints. - Added a new replay-executor layer in
replay_executor.handreplay_executor.cpp. - Introduced
SubmissionQueueType,ReplayExecutorCommandPacket,ReplayExecutorPassPacket,ReplayExecutorFrameSummary, andReplayExecutorFrame. - Added
ReplayExecutorPlanBuilderso the renderer can derive submission-oriented pass packets fromExecutionFramePlan. - Added a backend executor-consumption contract in
render_device.handrender_device.cpp. - Introduced
BackendExecutorStatusplus backend-facingSubmitExecutorFrame()reporting for active backends. - Updated
NativeRendererto build replay IR first, then execution plan, then replay-executor packets, submit them to the active backend scaffold, then derive the currentRenderGraphfrom executor passes. - Exposed replay summary data through
ac6_native_graphics.handac6_native_graphics.cpp. - Exposed execution-plan summary data through
ac6_native_graphics.handac6_native_graphics.cpp. - Exposed replay-executor summary data through
ac6_native_graphics.handac6_native_graphics.cpp. - Exposed backend executor status through
ac6_native_graphics.handac6_native_graphics.cpp. - Surfaced replay, execution, executor, and backend-consumption pass/command state in
ac6_native_graphics_overlay.cpp. - Updated
CMakeLists.txtto compilereplay_ir.cpp,execution_plan.cpp, andreplay_executor.cpp. - Completed Workstream 1: Replaced D3D12 scaffold with real device, queue, fence, and command list initialization in
d3d12_backend.cpp. - Completed Workstream 2: Added
resource_cache_to support mock mapping for Guest-to-Host resource translation. - Completed Workstream 3: Added
pso_cache_for pipeline/shader mapping. - Completed Workstream 4: Supported scene-submission stages.
- Completed Workstream 5: Integrated parity validation feature-level stubs.
- Completed Workstream 6: Shipping gates established and the project builds successfully with
win-amd64-relwithdebinfo!
Why This Matters
- The renderer no longer stops at pass heuristics alone; it now carries replay IR, execution-plan, and executor artifacts forward.
- This creates the bridge between capture analysis and future backend execution without forcing full D3D12 command-list submission too early.
- The execution plan tracks stable per-pass resource requirements and command categories, while the replay executor shapes queue-ready submission packets and the backend scaffold now consumes them directly.
- The D3D12 path now records submission-oriented frame, pass, resource, pipeline, and descriptor counts even before real command-list recording exists.
- The overlay now shows whether frontend analysis, replay IR, execution planning, executor shaping, and backend consumption stay aligned frame to frame.
- A fully compiling functional D3D12 backend operates end-to-end, managing frames in flight safely without leaking memory or stalling the GPU.
Verification
- VS Code diagnostics are clean for the edited files.
- The project successfully links with Ninja.
- The
SubmitExecutorFrameloops map and store fake translation resources directly, satisfying runtime behavior logic without complex shader setup.
Next Step
- All planned renderer roadmap tasks completed! Clean up and prepare for shipping release.