Hosted GitHub runners have no usable GPU, so any job that opens a VkDevice (Context::new) or renders pixels cannot run in ci.yml. The project's authoritative validator is the native RTX 4090; WSL2 Dozen is non-conformant/atomic-only and explicitly NOT a CI target.
Goal: register a self-hosted runner (labels: self-hosted, gpu, vulkan) on a box with a real Vulkan ICD and add a render-correctness workflow (gated on workflow_dispatch + label/branch, not every PR, to protect the private runner).
Scope:
- Run
offscreen_png on a set of assets/*.riv and diff the PNGs against committed goldens via tools/png_diff.py (with a tolerance band).
- Run the currently
#[ignore]d cross_context_handles_are_rejected test (cargo test -p rive-renderer -- --ignored) — it needs TWO real Vulkan devices.
- Exercise BOTH tiers:
floor (CPU-copy readback) and zero_copy (renders into a wgpu VkImage).
Security note: self-hosted runners must NOT run untrusted-fork PRs by default; gate on pull_request_target review or restrict to internal branches.
Depends on: nothing in-repo; this is an infra task.
Hosted GitHub runners have no usable GPU, so any job that opens a VkDevice (Context::new) or renders pixels cannot run in
ci.yml. The project's authoritative validator is the native RTX 4090; WSL2 Dozen is non-conformant/atomic-only and explicitly NOT a CI target.Goal: register a self-hosted runner (labels:
self-hosted,gpu,vulkan) on a box with a real Vulkan ICD and add arender-correctnessworkflow (gated onworkflow_dispatch+ label/branch, not every PR, to protect the private runner).Scope:
offscreen_pngon a set ofassets/*.rivand diff the PNGs against committed goldens viatools/png_diff.py(with a tolerance band).#[ignore]dcross_context_handles_are_rejectedtest (cargo test -p rive-renderer -- --ignored) — it needs TWO real Vulkan devices.floor(CPU-copy readback) andzero_copy(renders into a wgpu VkImage).Security note: self-hosted runners must NOT run untrusted-fork PRs by default; gate on
pull_request_targetreview or restrict to internal branches.Depends on: nothing in-repo; this is an infra task.