Validate OpenGL command plan dependencies

This commit is contained in:
2026-06-02 21:06:44 +02:00
parent 1dcd96ab36
commit d664e9fc39
7 changed files with 120 additions and 12 deletions

View File

@@ -538,7 +538,9 @@ passes, draws, shader binds, shader uniforms, texture uploads, mipmap
generation, texture transitions, texture copies, texture readbacks, frame
captures, passthrough commands, trace commands, unsupported commands, and
render-pass ordering errors such as state changes outside a pass, nested
passes, and unclosed passes.
passes, and unclosed passes. It also validates executable command dependencies,
including shader-before-uniform and shader-plus-mesh before draw within each
render pass.
The existing renderer classes are not yet fully
behind the renderer interfaces.
@@ -853,7 +855,8 @@ Results:
upload/mipmap/transition/copy/readback/capture metadata, blit filters and
byte totals, planned command names, unsupported enum/state rejection, whole
recorded stream planning, valid trace/render/shader/draw/blit ordering, typed
texture-command counts, and broken render-pass order detection.
texture-command counts, broken render-pass order detection, and executable
draw/uniform dependency failures.
- PowerShell analyze automation returns JSON summaries and includes the shader
validation target and renderer-boundary guard.
- `windows-msvc-vcpkg-headless` configured through the Visual Studio bundled
@@ -898,8 +901,8 @@ Results:
`pp_renderer_gl` is available, it also emits an `openGlPlan` JSON object with
planned command count, support status, render-pass/draw/shader-bind/uniform/
texture-upload/mipmap/transition/copy/readback/capture/passthrough/trace
counts, unsupported command count, render-pass order error count, and
unclosed-pass state. The
counts, unsupported command count, render-pass order error count, dependency
error count, and unclosed-pass state. The
`--exercise-clear` mode deliberately clears an interrupted trace/render pass,
verifies stale trace-scope state is rejected, verifies the render context can
be reused, and then emits that reset status in JSON. It also has an