Commit Graph
96 Commits
Author SHA1 Message Date
Dean Galvin 6f830952fb ci(release): check out nested submodules
build.yml runs git submodule update --init --recursive, but release.yml checked out only the top-level submodules. A submodule with its own submodules, such as Mbed TLS's framework in #3897, would leave the release configure step without them.
2026-10-14 22:37:06 +13:00
Dean 0b97f8b9f5 Merge pull request #3664 from alfalfa-star/feat/linux-wayland
feat(videoout): use native Wayland on Linux
2026-10-14 22:32:26 +13:00
boykopovar 6d35b92ba6 feat(ci): truncate long release commits list 2026-10-14 10:48:45 +03:00
alfalfa-starandClaude Opus 5.5 040873f9dc feat(videoout): use native Wayland on Linux
Build SDL's Wayland backend next to X11 and ask SDL for "wayland,x11"
on Linux, so the window runs natively under a Wayland compositor instead
of through XWayland. SDL loads libwayland, xkbcommon and libdecor at run
time, so systems without them, or sessions without WAYLAND_DISPLAY, keep
using X11. SDL_VIDEODRIVER still overrides the choice.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 07:24:34 +02:00
Dean Galvin 8702de1e6f ci(build): key the Mesa shader cache by the runner's CPU model too
Since #5263 the Linux job restores a lavapipe shader cache keyed by the
runner's /proc/cpuinfo flags. llvmpipe compiles shaders with LLVM's host
CPU *name* (from vendor, family and model) plus the detected feature bits,
and keys its cache only by the feature bits, so two runners with the same
flags but different models share cached code. A hull shader JIT-compiled
on a znver4/znver5 or Ice Lake class host uses GFNI (vgf2p8affineqb);
loaded on a Zen 3 host with the same flags it raises SIGILL, which is what
agc_driver_tessellation has been hitting on main and on dispatched builds
since the first main build after #5234 saved that hull variant.

Hash vendor_id, cpu family, model and flags into the key, so a runner only
restores code compiled for its own CPU model, and print the model name so a
future mismatch can be read off the log.
2026-10-14 17:11:46 +13:00
Adrià FranchandClaude 32accfa938 ci(build): key the Mesa shader cache by the runner's CPU flags
The cache from #5107 was keyed by Mesa version only, so a runner restored
llvmpipe code compiled on another runner's CPU and about 85 agc tests died
with SIGILL (Illegal instruction) on main.

Co-Authored-By: Claude <[email protected]>
2026-10-13 17:57:49 +02:00
Adrià FranchandClaude 71f98dd746 ci(build): let a dispatched build skip the Linux job
Co-Authored-By: Claude <[email protected]>
2026-10-13 17:03:50 +02:00
Adrià ab1755c258 Merge pull request #4459 from LeandroLP23/docs/contributing-gpus-tested
docs(contributing): ask GPU changes to name the GPUs their tests ran on
2026-10-13 16:11:54 +02:00
boykopovar 0f2683cb7d Merge pull request #5135 from boykopovar/feat/web-relinker-ui
feat(ci): add relinker wasm build ci
2026-10-13 15:31:28 +03:00
boykopovar 693578f116 ci(pages): rename deployment workflow file 2026-10-13 15:27:02 +03:00
boykopovar dece64c6e8 ci(pages): build and deploy wasm converter 2026-10-13 15:26:04 +03:00
Adrià FranchandClaude 5181b30d79 ci(windows): build the f16 unpack execution test, it runs without a device
Co-Authored-By: Claude <[email protected]>
2026-10-13 14:18:28 +02:00
Adrià FranchandClaude aef5972ff5 ci(linux): keep lavapipe's shader cache between builds
Co-Authored-By: Claude <[email protected]>
2026-10-13 13:51:10 +02:00
Adrià FranchandClaude 1137c57572 ci(windows): build only the execution tests that run without a Vulkan device
Co-Authored-By: Claude <[email protected]>
2026-10-13 13:44:08 +02:00
Adrià FranchandClaude 3c273e7081 ci(build): run relinker and context matrices on dispatch only when touched
Co-Authored-By: Claude <[email protected]>
2026-10-13 13:39:04 +02:00
LeandroLP23andClaude Opus 5.5 fa889c063b docs(contributing): ask GPU changes to name the GPUs their tests ran on
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 07:45:50 +02:00
Adrià Franch 4d15207553 ci: cache the API state of the hourly workflows
pr-overlap and area-labels walked every open PR on each run, spending the
1000 requests/hour that GITHUB_TOKEN gets per repository and starving the
other workflows (HTTP 403 'rate limit exceeded for installation').

pr-overlap keeps a hash of each report in actions/cache and only reads the
comments of PRs whose report changed. area-labels keeps head SHA plus the
labeler.yml blob per PR and labels only the changed ones, at most 40 per
run. conflict-label gets a concurrency group so pushes in a row don't stack
full passes.
2026-10-12 23:49:09 +02:00
Adrià 4fc51fd991 Merge pull request #4590 from AlxcBTW/feat/perf-template
docs: add a performance report issue form and ask for summary lines
2026-10-12 23:11:53 +02:00
Adrià 44ab0c39ee Merge pull request #3886 from PrintOrb/fix/videoout-high-frame-rate
fix(videoout): support permitted high-frame-rate output for Quake II
2026-10-12 22:23:31 +02:00
Adrià FranchandClaude 63e60db1a7 feat(progress): publish a progress history chart
tools/progress_history.py measures the first-parent history of main with
the rules of tools/progress.py, one point per day, and writes history.json,
history.svg and history.html. The Progress workflow runs it after
progress.py; the README shows the chart under the map and links the page.
Labels and points compact as days accumulate.

Co-Authored-By: Claude <[email protected]>
2026-10-12 21:31:09 +02:00
PrintOrb 8024471225 Merge branch 'main' into fix/videoout-high-frame-rate 2026-10-12 14:27:28 -05:00
Adrià 682ef0c174 Merge pull request #4444 from fma-rc/docs/discussion-form-game-bring-up
docs: add a discussion form for game bring-up threads
2026-10-12 21:11:46 +02:00
Adrià Franch 908cd42880 docs: point the bring-up form to the blocker map
COMPATIBILITY.md no longer exists
2026-10-12 21:11:37 +02:00
Adrià a60f52e318 Merge pull request #4400 from adriadam10/ci/stale-conflict-warning
ci: remind stale conflicting pull requests to rebase
2026-10-12 20:54:11 +02:00
Adrià FranchandClaude 555099ae23 feat(tools): keep technical debt in one file per library
Co-Authored-By: Claude <[email protected]>
2026-10-12 20:38:17 +02:00
AlxcBTWandClaude Opus 5.5 81e4638254 docs: add a performance report issue form and ask for summary lines
.github/ISSUE_TEMPLATE/performance.yml asks for the title and scene, what is
slow or what changed, the summary lines and traces of APS5_TRACE_FRAMES
captures, the trace digest and optionally the worker's collapsed stacks,
and states the capture protocol: warm caches, the same scene and settings,
no other profiling switch, the same machine and session. The pull request
template and CONTRIBUTING ask a pull request that claims a change in speed
for the summary lines of main and of the change, captured the same way.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 18:23:52 +02:00
PrintOrb 9c007805d6 Merge branch 'main' into fix/videoout-high-frame-rate 2026-10-12 11:15:48 -05:00
fma-rc 8dcb4e5c6b docs: mark the run fields of the bring-up form as a first report 2026-10-12 15:41:21 +02:00
fma-rc b6f81995fc docs: add a discussion form for game bring-up threads 2026-10-12 15:23:16 +02:00
Adrià FranchandClaude 8ccf9ee752 ci: remind stale conflicting pull requests to rebase
Co-Authored-By: Claude <[email protected]>
2026-10-12 11:54:58 +02:00
Adrià FranchandClaude d9d00f0e34 ci(build): run pull request jobs only when their files change
Co-Authored-By: Claude <[email protected]>
2026-10-12 11:35:11 +02:00
Adrià FranchandClaude 7949388c0b docs(contributing): name the title a pull request unblocks
Co-Authored-By: Claude <[email protected]>
2026-10-12 11:05:40 +02:00
PrintOrb 5c19601a12 fix(videoout): require bundled SDL XRandR support on Linux 2026-10-11 17:36:12 -05:00
marshmll 3d83999350 fix(build): require an SDL audio backend on Linux
The bundled SDL builds its PipeWire, PulseAudio and ALSA drivers only
when their development files are found, and otherwise keeps just the
silent dummy and disk drivers without an error. The Linux CI and
release jobs install none of them, so the v0.1.1 Linux libraries
(libSceAudioOut, libSceAgcDriver, libfmod) contain no audible driver.

Fail configuration on Linux when SDL found none of the three, install
the Debian development packages in the Linux build and release jobs,
and list the packages in the build instructions.
2026-10-11 10:34:29 -03:00
Adrià FranchandClaude 14f585a439 ci(pr): limit open pull requests by the author's merged count
Authors with no merged pull requests can have 1 open, with at least 1
merged 20, and from 20 merged there is no limit. Reopening a pull
request runs the check again.

Co-Authored-By: Claude <[email protected]>
2026-10-11 11:28:43 +02:00
boykopovar f4b6e1011d ci(pr): set min intake pr count to 10 2026-10-10 18:37:56 +03:00
Adrià 00d4e3a540 Merge pull request #976 from Saibamen/ci/release-parity
ci(release): match PR CI Vulkan and Windows SSL setup
2026-10-10 11:29:15 +02:00
Adrià e0526f57cd Merge pull request #1686 from Cloud-Multiplayer/feat/macos-write-watch
feat(libc): write watch on macOS hosts
2026-10-10 08:03:40 +02:00
Dean Galvin 079f3b759d ci(build): save the compiler cache from main builds
No job saved its ccache, so every build restored a day-old cache and
recompiled about half the tree (971/2038 hits). Main push builds now
save it, and they no longer cancel each other, so one finishes and
refreshes it. Pull request builds still only restore, so PR code never
writes the shared cache.
2026-10-10 16:50:01 +13:00
Elijah De GuzmanandClaude Opus 5.5 80b0bab279 feat(libc): write watch on macOS hosts
macOS has no counterpart to userfaultfd write-protect or
MEM_WRITE_WATCH, so GuestWriteWatch had no backend there and the driver
re-read every guest buffer on each use.

The macOS backend write-protects watched pages. The first write to a
page faults, the SIGBUS/SIGSEGV handler records the page and restores
its protection, and Collect reports the recorded pages and protects
them again. A page is protected before its record is cleared, under the
lock the handler takes, so a write that lands in between is recorded.
The lock hands out turns in order: an unfair one starved writers under
Rosetta.

The protection is real, which adds three entry points:
- GuestWriteWatchBeginHostWrite/EndHostWrite lift it around a system
  call that writes guest memory, which would otherwise fail with
  EFAULT. GuestArena::HostWrite calls them, as it calls the Windows
  equivalent.
- GuestWriteWatchProtectionChanged tells the watch the protection given
  to watched pages by mprotect or a new mapping.
- GuestWriteWatchProtection reports that protection, since a watched
  page is read-only between a collection and the next write.

Register keeps the recorded protection of a page it already watches:
read from the kernel it would be the watch's own read-only protection,
and the page would never be watched again.

The tests build without the prx libraries and run natively and through
Rosetta.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 21:11:40 -04:00
Adrià 0eb7f098dd Merge pull request #1499 from yabanana/codex/macos-unwind-register-context
feat(libc): support x86-64 unwind register contexts on macOS
2026-10-10 03:04:54 +02:00
Dean 3e3290dc03 Merge pull request #2360 from Aerovity/ci/labels-skip-existing
ci(labels): create unforced labels only when they are missing
2026-10-10 11:39:22 +13:00
Dean 96ce3acdd0 Merge pull request #1028 from Dextroid17/ci/guard-against-new-skips
ci: fail when a test skips that the job's device is not expected to skip
2026-10-10 11:33:15 +13:00
Adam Stachowicz 95073bc45a ci(release): match PR CI Vulkan and Windows SSL setup
Install lavapipe on Linux release builds and set ANYPS5_REQUIRE_VULKAN and GALLIUM_OVERRIDE_CPU_CAPS for ctest so GPU execution tests run instead of skipping. Scope SSL_CERT_FILE to Windows winlibs download and CMake configure steps only so Linux FFmpeg fetch is not broken. Leave release ctest as a single strict run.
2026-10-10 00:20:59 +02:00
Saibamen 94ee5e5f91 ci(labels): checkout before area labeler on scheduled runs
Check out the repo when labeling open PRs so actions/labeler reads .github/labeler.yml locally instead of fetching it from the API once per pull request.
2026-10-09 22:44:08 +02:00
Dean Galvin 4a53177bc5 ci(build): build pull requests merged into current main
GitHub refreshes merge_commit_sha only when the pull request's branch
changes, so a manual build could test the pull request against a main
from days earlier. Each job now checks out main as it is when the build
starts and merges the pull request head into it.
2026-10-10 07:36:18 +13:00
boykopovar e6e92e7402 refactor(ci): simplify pr intake closure message 2026-10-09 20:16:05 +03:00
boykopovar 9a03dad6fb ci(prs): require 20 merged prs for pr intake 2026-10-09 20:12:52 +03:00
boykopovar af39aac1a2 ci(prs): close prs from new contributors while intake is paused 2026-10-09 19:46:43 +03:00
AerovityandClaude Opus 5.5 1a2ca5678d ci(labels): create unforced labels only when they are missing
gh label create exits non-zero for a label that already exists, and the
step runs with bash -e, so the first existing unforced label stopped the
job. Skip labels that already exist, keeping hand-set colors.

Fixes #2320

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 18:12:45 +02:00