CI: run pspautotests on all four CPU backends

The headless tests only ever exercised the JIT, since that's what headless
defaults to. Run all four on the Linux runners, and add an arm64 Linux lane
so the arm64 JIT is covered too - nothing else in the matrix tested it.

test.py scales the wall clock to the backend instead of raising it for
everyone: the interpreter needs 20s for gpu/rendertarget/copy, which does
over a million guest-side vsprintf calls, while a hang under the JIT is
still caught in five seconds.

The frametest report artifact needs a per-OS name now that two Linux legs
upload one.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
Henrik RydgårdandClaude Opus 5 committed 2026-09-19 12:20:48 -06:00
1 parent a90087012d
commit bb556bf481
2 files changed
+53 -4

No files matched your search

+27 -2
View File
@@ -228,6 +228,15 @@ jobs:
args: ./b.sh --headless --unittest
id: gcc-normal
# Gives the headless tests an arm64 host to run the CPU backends on - the arm64 JIT is a
# different backend from the x86-64 one, and nothing else in the matrix tests it on Linux.
- os: ubuntu-26.04-arm
extra: test
cc: clang
cxx: clang++
args: ./b.sh --headless --unittest
id: clang-arm64
- os: ubuntu-26.04
extra: android
cc: clang
@@ -456,7 +465,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-26.04, macos-latest]
os: [ubuntu-26.04, ubuntu-26.04-arm, macos-latest]
runs-on: ${{ matrix.os }}
needs: build
@@ -501,9 +510,25 @@ jobs:
run: ./PPSSPPUnitTest ALL
- name: Execute headless tests
if: runner.os != 'Linux'
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: python test.py -g --graphics=software
# The Linux runners carry the CPU backend coverage, on both x86-64 and arm64. Elsewhere the
# default (JIT) is enough - the backends are shared code, and four runs everywhere adds up.
# test.py picks a wall clock to match the backend, so the slower ones don't time out.
- name: Execute headless tests (all CPU backends)
if: runner.os == 'Linux'
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: |
fail=0
for cpu in jit jit-ir ir interpreter; do
echo "::group::CPU backend: $cpu"
python test.py -g --graphics=software --cpu=$cpu || fail=1
echo "::endgroup::"
done
exit $fail
- name: Execute frametests
if: runner.os == 'Linux'
working-directory: ${{ env.GITHUB_WORKSPACE }}
@@ -513,7 +538,7 @@ jobs:
uses: actions/upload-artifact@v7
if: runner.os == 'Linux' && always()
with:
name: frametest-report
name: frametest-report-${{ matrix.os }}
path: frametests/out/
test-headless-alpine: