97 lines
4.5 KiB
YAML
97 lines
4.5 KiB
YAML
name: Windows editor and software Vulkan
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
permissions:
|
|
contents: read
|
|
concurrency:
|
|
group: windows-graphics-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: false
|
|
jobs:
|
|
windows-graphics:
|
|
runs-on: windows-2025
|
|
timeout-minutes: 90
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
|
|
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
|
|
with:
|
|
python-version: '3.12'
|
|
- name: Visual Studio x64 environment
|
|
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756
|
|
with:
|
|
arch: x64
|
|
- name: Enable the documented Windows long-path developer profile
|
|
shell: pwsh
|
|
run: |
|
|
$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem'
|
|
Write-Output "Previous LongPathsEnabled: $((Get-ItemProperty -Path $key).LongPathsEnabled)"
|
|
New-ItemProperty -Path $key -Name LongPathsEnabled -Value 1 -PropertyType DWORD -Force
|
|
- name: Identify pinned Vulkan source cache
|
|
id: vulkan-identity
|
|
run: python tools/ci/prepare_windows_vulkan.py --cache-key
|
|
- name: Restore pinned Vulkan test tools
|
|
id: vulkan-cache
|
|
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830
|
|
with:
|
|
key: ${{ steps.vulkan-identity.outputs.key }}
|
|
restore-keys: ${{ steps.vulkan-identity.outputs.legacy }}
|
|
path: |
|
|
.cache/windows-graphics/sdk
|
|
.cache/windows-graphics/driver
|
|
- name: Build official Vulkan loader and SwiftShader from pinned sources
|
|
run: python tools/ci/prepare_windows_vulkan.py
|
|
- name: Save successfully built Vulkan test tools
|
|
if: steps.vulkan-cache.outputs.cache-hit != 'true'
|
|
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830
|
|
with:
|
|
key: ${{ steps.vulkan-cache.outputs.cache-primary-key }}
|
|
path: |
|
|
.cache/windows-graphics/sdk
|
|
.cache/windows-graphics/driver
|
|
- name: Probe Vulkan loader and SwiftShader before compiling the engine
|
|
# Hosted Windows jobs are elevated, so Khronos correctly ignores driver
|
|
# environment overrides. Register the software ICD only on this disposable VM.
|
|
# https://github.com/KhronosGroup/Vulkan-Loader/blob/main/docs/LoaderDriverInterface.md#driver-discovery-on-windows
|
|
env:
|
|
VK_LOADER_DEBUG: all
|
|
run: |
|
|
$driverKey = 'HKLM:\SOFTWARE\Khronos\Vulkan\Drivers'
|
|
New-Item -Path $driverKey -Force | Out-Null
|
|
New-ItemProperty -Path $driverKey -Name $env:VK_DRIVER_FILES -PropertyType DWord -Value 0 -Force | Out-Null
|
|
python tools/ci/probe_windows_vulkan.py
|
|
- name: Fetch checksum-verified Slang compiler
|
|
run: python tools/fetch_slang.py
|
|
- name: Configure full editor and Player
|
|
run: cmake --preset windows-debug -DFASET_BUILD_RENDERER=ON -DFASET_BUILD_EDITOR=ON
|
|
- name: Build full editor and tests
|
|
run: cmake --build --preset windows-debug --parallel 2
|
|
- name: CPU contracts and software GPU pixel tests
|
|
env:
|
|
VK_LOADER_DEBUG: error,warn,driver
|
|
run: ctest --preset windows-debug --timeout 180
|
|
- name: Real Release exports, 2D and 3D execution, incremental Debug rebuild
|
|
run: build/windows-debug/faset_build_service_tests.exe --integration .cache/windows-export-e2e
|
|
- name: Export and relocate both checked-in playable games
|
|
run: python tools/verify_playable_exports.py --editor build/windows-debug/faset_editor.exe --output .cache/windows-playable-exports
|
|
- name: Preserve graphics and export evidence
|
|
if: always()
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
|
with:
|
|
name: windows-graphics-evidence
|
|
if-no-files-found: warn
|
|
retention-days: 14
|
|
include-hidden-files: true
|
|
path: |
|
|
.cache/windows-graphics/toolchain.json
|
|
.cache/windows-graphics/probe.json
|
|
.cache/windows-graphics/driver/*.json
|
|
.cache/windows-graphics/sdk/source-identity.json
|
|
build/windows-debug/Testing/Temporary/LastTest.log
|
|
build/windows-debug/*test.ppm
|
|
.cache/windows-export-e2e/result-*.json
|
|
.cache/windows-export-e2e/export-*/generations/*/manifest.json
|
|
.cache/windows-export-e2e/export-*/generations/*/verification.ppm
|
|
.cache/windows-playable-exports/report.json
|
|
.cache/windows-playable-exports/evidence/*
|