Add renderer frame capture contract

This commit is contained in:
2026-06-02 15:18:04 +02:00
parent d37145660a
commit 818014127a
9 changed files with 138 additions and 14 deletions

View File

@@ -285,12 +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, readback bounds, and destination buffer sizes, records render
and readback commands, and records trace markers without a window or GL
context.
command order, readback bounds, frame-capture sources, and destination buffer
sizes, records render/readback/frame-capture commands, and records trace
markers without a window or GL context.
- `pano_cli record-render` exposes the recording renderer through JSON
automation, including readback command/byte totals, and is covered by
`pano_cli_record_render_smoke` plus
automation, including readback and frame-capture command/byte totals, and is
covered by `pano_cli_record_render_smoke` plus
`pano_cli_record_render_rejects_oversized_target`.
- `pano_cli simulate-document-history` exposes `pp_document::DocumentHistory`
apply/undo/redo state through JSON automation and is covered by

View File

@@ -416,7 +416,8 @@ 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 byte-size helpers, readback command validation, trace interface
readback byte-size helpers, readback command validation, frame-capture
byte-size helpers, frame-capture 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
@@ -718,8 +719,8 @@ Results:
plus malformed payload rejection at the export boundary.
- `pp_renderer_api_tests` passed, including shader descriptor validation,
PanoPainter shader catalog validation, readback byte-size and command-order
validation, recording readback command capture, and invalid catalog
rejection.
validation, frame-capture byte-size and command-order validation, recording
readback/frame-capture 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.
@@ -813,13 +814,13 @@ 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/readback validation and command/trace/readback capture, giving
automation a backend-neutral render path that does not require a window or GL
context.
command-order/readback/frame-capture validation; it records commands, trace
markers, texture readbacks, and frame captures, 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, trace/draw summary, and
readback command/byte totals for agent automation, with an expected-failure
smoke for oversized render/readback targets.
readback/frame-capture command/byte totals for agent automation, with an
expected-failure smoke for oversized render/readback targets.
- `pano_cli simulate-document-history` exercises pure document history
apply/undo/redo behavior and emits JSON layer/frame/history state for agent
automation.