|
libfreenect2 0.4
Open source driver for the Kinect for Windows v2 (K4W2) sensor
|
What CI covers automatically, what only a human with a sensor can cover, and what must be attached to a release. This page is the index; it does not restate the procedures that already live in Quality checks and v0.3 upstream issue coverage.
Every push and pull request runs the CI workflow. Full job list and runner placement in Development and contributing.
| Dimension | Covered by | Notes |
|---|---|---|
| GCC and Clang, shared and static | linux-builds | 4-way matrix, C++17 |
| C++17 conformance | all build jobs | -DCMAKE_CXX_STANDARD=17 |
| Unit tests | linux-builds, build-test-metal | ctest -L unit |
| Metal/CPU depth parity | build-test-metal | self-hosted macOS, real Apple GPU |
| Depth filter backend combinations | linux-filter-backends | |
| VAAPI JPEG decoding | linux-vaapi | |
| TegraJPEG fallback state machine | linux-vaapi | Fake primary; real Tegra hardware is release-only |
| CUDA | compile only | No runtime validation in CI |
| ASan + UBSan, TSan | sanitizers | |
| Stream-parser fuzzing | fuzzers | Bounded smoke run |
| Coverage | coverage | LLVM source coverage |
| Lint and static analysis | format, semgrep, static-analysis | |
| Python tooling | python-quality | Ruff + pytest |
What CI does not establish: OpenGL, OpenCL, and CUDA runtime behavior; USB transfer behavior; anything requiring a physical sensor. Hosted CI deliberately does not report GPU or USB runtime success when it only compiled or simulated those paths.
Run against a connected Kinect v2 after any change to USB handling, the device lifecycle, or a depth backend. Every command is hardware-free of a viewer, so this works over SSH.
Check for each run:
The Kinect hardware soak workflow automates the repeated-lifecycle and reconnect cases on a runner with the kinect label; see Quality checks and Self-hosted macOS CI runner setup.
The v0.3.0 gate is specified in v0.3 upstream issue coverage. In short, a release must attach results for:
A soak run with reconnect_cycles: 0 does not satisfy the unplug/replug gate and must be identified as such.
On a Jetson build with TegraJPEG and TurboJPEG enabled, run at least ten minutes of RGB capture with LIBFREENECT2_RGB_PROCESSOR=tegrajpeg Protonect -noviewer -frames 18000. If TegraJPEG reports an incomplete decoding result, require one fallback warning, a successful frame for that same packet, and uninterrupted TurboJPEG frames afterward. If the hardware failure does not occur, record the run as "not triggered" rather than claiming that runtime recovery was proven.
When attaching evidence to a release or a bug report, record the environment alongside the outcome — a pass means little without it:
Example, from a validation run of this checklist:
| Field | Value |
|---|---|
| Host | macOS 15.7.7, Apple M4 Pro (arm64) |
| Sensor | serial 094318334247, firmware 4.0.3917.0 |
| Link | 5 Gb/s (Speed: Up to 5 Gb/s) |
| Pipelines available | cpu dump metal opengl opencl opencl_kde |
| Exercised | metal (default), opengl, opencl, cpu |
| Result | Capture and registration OK; benign teardown error only |