Requirements

Requirements, specifications and tests are tracked with sphinx-needs. Each item has an ID, a status and links to the items it refines, implements or verifies.

Type

Prefix

Links

Requirement

REQ_

Specification

SPEC_

implements a requirement

Test

TEST_

verifies a specification or requirement; gtest names the GoogleTest case

Statuses: draft, open, implemented, verified.

Note

This section is at an early stage. The items below are a starting set that shows the structure; they are not a complete specification of the engine.

Overview

ID

Title

Type

Status

Implements

Verifies

REQ_GRAPH_PATHS

Multiple execution paths

req

implemented

REQ_GRAPH_PRERECORDED

Pre-recorded GPU work

req

implemented

REQ_GSPLAT_BACKENDS

Interchangeable splatting backends

req

implemented

SPEC_GRAPH_ORDER

Topological ordering with Kahn's algorithm

spec

implemented

REQ_GRAPH_PRERECORDED

TEST_GRAPH_HEADLESS_SUBMIT

Headless submit and wait

test

verified

REQ_GRAPH_PATHS; SPEC_GRAPH_ORDER

TEST_GSPLAT_BACKENDS_AGREE

Both backends agree on the raccoon scene

test

verified

REQ_GSPLAT_BACKENDS

Compute graph

Requirement: Pre-recorded GPU work REQ_GRAPH_PRERECORDED
status: implemented
is implemented by: SPEC_GRAPH_ORDER

Running a compiled graph shall not record Vulkan command buffers; it shall only submit command buffers recorded at compile time.

Requirement: Multiple execution paths REQ_GRAPH_PATHS
status: implemented

A compiled graph shall support a fixed number of execution paths, each with its own command buffers, so that several frames can be in flight at once.

Specification: Topological ordering with Kahn's algorithm SPEC_GRAPH_ORDER
status: implemented

ComputeGraph::compileFrom() orders the elements with Kahn’s algorithm, sets them up and records one command buffer per element and path.

Test: Headless submit and wait TEST_GRAPH_HEADLESS_SUBMIT
status: verified
gtest: ComputeGraph.headlessSubmitAndWait

Compiles a render graph over several headless paths and submits each path with submitAndWait.

Gaussian splatting

Requirement: Interchangeable splatting backends REQ_GSPLAT_BACKENDS
status: implemented

The compute and the raster Gaussian splatting backends shall take the same inputs, so that switching the backend does not change the surrounding graph.

Test: Both backends agree on the raccoon scene TEST_GSPLAT_BACKENDS_AGREE
status: verified
gtest: GaussianSplattingFactory.bothBackendsAgreeOnRaccoonScene

Renders the raccoon scene with both backends and compares the images.