60 lines
2.4 KiB
YAML
60 lines
2.4 KiB
YAML
name: macOS Vulkan research
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
world:
|
|
description: Create or open disposable demo worlds instead of title probes
|
|
type: boolean
|
|
default: false
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
native-probes:
|
|
runs-on: macos-26
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: '25'
|
|
- name: Build original mod and private probe dependencies
|
|
run: python tools/build_mod.py
|
|
- name: Probe vanilla, core and distant-terrain Vulkan cases
|
|
env:
|
|
HORIZON_GRAPHICS_WORLD: ${{ inputs.world }}
|
|
run: |
|
|
python - <<'PY'
|
|
import json, os, subprocess, sys
|
|
from pathlib import Path
|
|
cases = [
|
|
['--profile', 'baseline', '--backend', 'vulkan'],
|
|
['--profile', 'core-performance', '--backend', 'vulkan'],
|
|
['--profile', 'vulkan'],
|
|
]
|
|
if os.environ.get('HORIZON_GRAPHICS_WORLD') == 'true':
|
|
cases = [case + ['--world'] for case in cases]
|
|
observations = []
|
|
for case in cases:
|
|
result = subprocess.run([sys.executable, 'tools/test_client_graphics.py', '--native-display', *case], capture_output=True, text=True)
|
|
print(result.stdout, end='', flush=True)
|
|
print(result.stderr, end='', flush=True)
|
|
observation = {'case': case, 'exit_code': result.returncode}
|
|
if result.returncode:
|
|
marker = 'HORIZON_FIXTURE_FAILURE '
|
|
observation['failure'] = [json.loads(line.split(marker, 1)[1]) for line in result.stdout.splitlines() if marker in line]
|
|
else:
|
|
observation['report'] = json.loads(Path('dist/client-graphics-smoke.json').read_text())
|
|
observations.append(observation)
|
|
Path('dist/client-graphics-vulkan-research.json').write_text(json.dumps(observations, indent=2) + '\n')
|
|
sys.exit(int(any(item['exit_code'] for item in observations)))
|
|
PY
|
|
- name: Retain selected observations including failed cases
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: macos-vulkan-observations
|
|
path: dist/client-graphics-vulkan-research.json
|