Skip to content

Execute ordered multi-pass processing graphs #9

Description

@Super-Genius

Problem

The processing schema declares an ordered passes list with pass-level inputs, outputs, models, shaders, and transforms. The current runtime does not execute that graph. Process() receives one ModelNode, loads one model and one input, invokes one processor, and returns.

This prevents general compute and GCS workflows that need several dependent stages, and it also prevents compute-driven rendering that requires several Vulkan stages.

Scope

  • Execute every enabled pass in declared dependency order.
  • Build and validate dependencies from pass input/output bindings.
  • Support linear pipelines, branches, and merges.
  • Store pass outputs as typed intermediate resources available to later passes.
  • Detect missing producers, duplicate output names, incompatible bindings, and dependency cycles.
  • Track pass-level state, progress, errors, hashes, and output artifacts.
  • Stop or continue after a failed pass according to an explicit job policy.
  • Preserve intermediate Vulkan resources when consecutive COMPUTE or RENDER stages can reuse them safely.
  • Release intermediate resources when their final consumer completes.

Acceptance criteria

  • A job with at least three dependent passes executes in the correct order and passes named outputs to later stages.
  • Branching and merge tests produce stable results.
  • Invalid and cyclic graphs fail validation before execution.
  • Disabled passes are skipped without breaking valid downstream bindings.
  • Pass-level progress and errors identify the exact failing pass.

Depends on the pass/input correctness work in issue #8.

Base implementation and review work on the branch consumed by SuperGenius/develop.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions