Add renderer readback command contract

This commit is contained in:
2026-06-02 15:10:44 +02:00
parent a6a4e7b249
commit c58b9a3718
9 changed files with 255 additions and 11 deletions

View File

@@ -285,10 +285,12 @@ Known local toolchain state:
source code reintroduces raw `GL_*`/`WGL_*` constants outside the allowed
legacy OpenGL implementation files.
- `pp_renderer_api` exposes a headless `RecordingRenderDevice` that validates
command order, records render commands, and records trace markers without a
window or GL context.
command order, readback bounds, and destination buffer sizes, records render
and readback commands, and records trace markers without a window or GL
context.
- `pano_cli record-render` exposes the recording renderer through JSON
automation and is covered by `pano_cli_record_render_smoke`.
automation, including readback command/byte totals, and is covered by
`pano_cli_record_render_smoke`.
- `pano_cli simulate-document-history` exposes `pp_document::DocumentHistory`
apply/undo/redo state through JSON automation and is covered by
`pano_cli_simulate_document_history_smoke`.

View File

@@ -416,8 +416,9 @@ adding new backends.
Status: started. `pp_renderer_api` exists as a headless renderer-neutral target
with texture descriptor, byte-size, viewport, mesh, readback bounds, command
context, render device, shader program descriptor, mesh, render target,
readback, trace interface validation, and the canonical PanoPainter shader
catalog now consumed by the legacy OpenGL app initialization path.
readback byte-size helpers, readback command validation, trace interface
validation, and the canonical PanoPainter shader catalog now consumed by the
legacy OpenGL app initialization path.
`pp_renderer_gl` now exists as the first OpenGL backend library and owns pure
OpenGL capability detection for framebuffer fetch, map-buffer alignment, and
float texture support. It also owns the OpenGL texture upload-type mapping used
@@ -716,7 +717,9 @@ Results:
per-layer frame duration, and PNG-encoded face-payload export to PPI bytes,
plus malformed payload rejection at the export boundary.
- `pp_renderer_api_tests` passed, including shader descriptor validation,
PanoPainter shader catalog validation, and invalid catalog rejection.
PanoPainter shader catalog validation, readback byte-size and command-order
validation, recording readback command capture, and invalid catalog
rejection.
- `pp_paint_renderer_compositor_tests` passed.
- `pp_ui_core_color_tests` passed.
- `pp_ui_core_layout_value_tests` passed.
@@ -810,11 +813,12 @@ Results:
reintroduces raw `GL_*`/`WGL_*` constants outside the allowed legacy OpenGL
implementation files.
- `pp_renderer_api` now includes a headless `RecordingRenderDevice` with strict
command-order validation and command/trace capture, giving automation a
backend-neutral render path that does not require a window or GL context.
command-order/readback validation and command/trace/readback capture, giving
automation a backend-neutral render path that does not require a window or GL
context.
- `pano_cli record-render` exercises that headless recording renderer and emits
JSON command counts, target dimensions, backend name, and trace/draw summary
for agent automation.
JSON command counts, target dimensions, backend name, trace/draw summary, and
readback command/byte totals for agent automation.
- `pano_cli simulate-document-history` exercises pure document history
apply/undo/redo behavior and emits JSON layer/frame/history state for agent
automation.