mirror of
https://github.com/games-on-whales/gst-wayland-display.git
synced 2026-10-15 21:02:00 +00:00
Labels
No labels
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/gst-wayland-display#39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/gst-wayland-display/pull/38
Author: @JBailes
Created: 6/21/2026
Status: ✅ Merged
Merged: 8/16/2026
Merged by: @JBailes
Base:
stable← Head:ci/test-harness📝 Commits (3)
4c36305ci: add the build/test/benchmark harness and its CI workflow126b594ci: move benchmark/ into the harness PR; fix unit phase on CPU runners6203c19test: add GPU-free unit tests exercised by the harness unit phase📊 Changes
10 files changed (+996 additions, -3 deletions)
View changed files
➕
.github/workflows/harness.yml(+50 -0)➕
benchmark/README.md(+141 -0)➕
benchmark/bench-e2e.py(+155 -0)➕
benchmark/conv-timing.patch(+66 -0)➕
benchmark/run-conv-timing.sh(+48 -0)➕
ci/README.md(+54 -0)➕
ci/harness.sh(+297 -0)📝
wayland-display-core/src/comp/input.rs(+45 -0)📝
wayland-display-core/src/utils/allocator/mod.rs(+89 -3)📝
wayland-display-core/src/utils/video_info.rs(+51 -0)📄 Description
What
Extracts the build/test/benchmark harness and its CI workflow out of the Vulkan NV12 encode PR (#37) so the reusable test/CI infrastructure can be reviewed and merged on its own, shrinking #37 to just the feature.
ci/harness.sh— one phased entry point (detect · lint · build · unit · gpu · integration · bench) that detects the GPU(s) present, builds the workspace (default +cudawhen an Nvidia GPU is present), runs the tests, and prints a single pass/fail summary. It encodes the bare-box environment knowledge:LIBCLANG_PATHfor bindgen,XDG_RUNTIME_DIRfor the compositor, render-node→vendor detection, per-vendor encoder elements.ci/README.md— harness docs (phases, vendor matrix, host prerequisites)..github/workflows/harness.yml— runsci/harness.sh lint build uniton a GitHub-hosted runner (in theghcr.io/games-on-whales/gstreamercontainer); the fullgpu/integration/benchmatrix runs on a self-hostedgpurunner, gated byvars.GPU_RUNNER == 'true'.Why separate
The harness is reusable infrastructure that's valuable independent of the Vulkan feature: on a CPU-only runner it exercises lint + build + the existing unit tests (the repo had no build/unit CI before — only
rust-format.yml). The GPU/bench phases self-skip when there's no render node, so this is safe to land first.Scope (what's intentionally NOT here)
The feature-specific pieces the
gpu/benchphases drive —gst-plugin-wayland-display/tests/encode.rsandbenchmark/— call into the Vulkan NV12 code (waylanddisplaycore::utils::vulkan_nv12::supported_nv12_modifiers, etc.) and would not compile onstable, so they stay in #37. The harness self-skips them until they exist. #37 can rebase onto this and drop these three files (they're byte-identical to its versions, so the rebase is clean).Verification
This PR's own
harness.ymlrun is the proof:ci/harness.sh lint build unitagainststablein the gstreamer container. Theharness-gpujob stays inert (noGPU_RUNNER).Follow-up (not in this PR):
rust-format.ymlis now subsumed by the harnesslintphase and could be removed.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.