Skip to content

fixing headless initialization and re-goldening on windows with swift… #19

fixing headless initialization and re-goldening on windows with swift…

fixing headless initialization and re-goldening on windows with swift… #19

name: Rendering tests
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
rendering-tests:
runs-on: ubuntu-latest
env:
GOLDEN_DIR: ${{ github.workspace }}/tests/golden_headless_vulkan
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.1
with:
vulkan-query-version: 1.4.341.1
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang
vulkan-use-cache: true
- name: Cache SwiftShader
id: cache-swiftshader
uses: actions/cache@v4
with:
path: /usr/local/share/swiftshader
key: swiftshader-89556131bf9d
- name: Build SwiftShader (software Vulkan ICD)
if: steps.cache-swiftshader.outputs.cache-hit != 'true'
run: |
git clone https://swiftshader.googlesource.com/SwiftShader /tmp/swiftshader
git -C /tmp/swiftshader checkout 89556131bf9d48af3c5c9fbb9a3322e706da89a3
cmake -S /tmp/swiftshader -B /tmp/swiftshader/build \
-DCMAKE_BUILD_TYPE=Release \
-DSWIFTSHADER_BUILD_TESTS=OFF \
-DSWIFTSHADER_BUILD_BENCHMARKS=OFF
cmake --build /tmp/swiftshader/build --config Release -j$(nproc)
sudo mkdir -p /usr/local/share/swiftshader
sudo cp /tmp/swiftshader/build/Linux/libvk_swiftshader.so /usr/local/share/swiftshader/
sudo cp /tmp/swiftshader/build/Linux/vk_swiftshader_icd.json /usr/local/share/swiftshader/
- name: Register SwiftShader ICD
run: |
sudo mkdir -p /etc/vulkan/icd.d
echo '{
"file_format_version": "1.0.0",
"ICD": {
"library_path": "/usr/local/share/swiftshader/libvk_swiftshader.so",
"api_version": "1.1.0"
}
}' | sudo tee /etc/vulkan/icd.d/swiftshader.json
- name: Configure
run: >
cmake -B build
-DCMAKE_BUILD_TYPE=Release
-DNOTHOFAGUS_BACKEND_VULKAN=ON
-DNOTHOFAGUS_HEADLESS_VULKAN=ON
-DNOTHOFAGUS_BUILD_TESTS=ON
-DNOTHOFAGUS_USE_GLSLANG=ON
-S ${{ github.workspace }}
- name: Build
run: cmake --build build --config Release --target rendering_tests
- name: Run tests against Vulkan golden files
run: ./build/tests/rendering_tests
- name: Update Vulkan golden files if missing
if: failure()
run: |
echo "Tests failed — regenerating Vulkan golden files."
echo "If this is expected (rendering change), run locally:"
echo " GOLDEN_DIR=tests/golden_headless_vulkan UPDATE_GOLDEN=1 ./build/tests/rendering_tests"
echo "Then commit the updated golden_headless_vulkan/ files."
UPDATE_GOLDEN=1 ./build/tests/rendering_tests
echo "--- Updated golden files ---"
ls -la tests/golden_headless_vulkan/