name: Shaders on: push: branches-ignore: [ # We don't need to run on renovate PRs. "renovate/**", # This is the branch the merge queue creates. "gh-readonly-queue/**", ] tags: [v0.*] pull_request: merge_group: env: # Sourced from https://vulkan.lunarg.com/sdk/home#linux # # We don't include the 4th version number, as it's not used in any URL. VULKAN_SDK_VERSION: "1.4.313" # Sourced from https://github.com/microsoft/DirectXShaderCompiler/releases # # Must also be changed in ci.yaml DXC_RELEASE: "v1.8.2502" DXC_FILENAME: "dxc_2025_02_20.zip" jobs: naga-validate-windows: name: "Validate: HLSL" runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Debug symbols to `line-tables-only` shell: bash run: | mkdir -p .cargo cat <> .cargo/config.toml [profile.dev] debug = "line-tables-only" EOF - uses: Swatinem/rust-cache@v2 # We must have the FXC job before the DXC job, so the DXC PATH has priority # over the FXC PATH. This is because the windows kits also include an older # version of DXC, which we don't want to use. - name: Setup FXC run: | Get-Childitem -Path "C:\Program Files (x86)\Windows Kits\10\bin\**\x64\fxc.exe" ` | Sort-Object -Property LastWriteTime -Descending ` | Select-Object -First 1 ` | Split-Path -Parent ` | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append shell: powershell - name: Setup DXC shell: bash run: | set -e curl.exe -L --retry 5 https://github.com/microsoft/DirectXShaderCompiler/releases/download/$DXC_RELEASE/$DXC_FILENAME -o dxc.zip 7z.exe e dxc.zip -odxc bin/x64/{dxc.exe,dxcompiler.dll} # We need to use cygpath to convert PWD to a windows path as we're using bash. cygpath --windows "$PWD/dxc" >> "$GITHUB_PATH" - name: Validate shell: bash run: | set -e dxc --version cd naga cargo xtask validate hlsl dxc cargo xtask validate hlsl fxc naga-validate-macos: name: "Validate: MSL" runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: Debug symbols to line-tables-only shell: bash run: | mkdir -p .cargo cat <> .cargo/config.toml [profile.dev] debug = "line-tables-only" EOF - uses: Swatinem/rust-cache@v2 - run: | cd naga cargo xtask validate msl naga-validate-linux: name: "Validate: SPIR-V/GLSL/DOT/WGSL" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Install Vulkan SDK shell: bash run: | set -e sudo apt-get update -y -qq # vulkan sdk wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-$VULKAN_SDK_VERSION-noble.list https://packages.lunarg.com/vulkan/$VULKAN_SDK_VERSION/lunarg-vulkan-$VULKAN_SDK_VERSION-noble.list sudo apt-get update sudo apt install -y vulkan-sdk - name: Install Graphviz run: sudo apt-get install graphviz - name: Debug symbols to `line-tables-only` shell: bash run: | mkdir -p .cargo cat <> .cargo/config.toml [profile.dev] debug = "line-tables-only" EOF - uses: Swatinem/rust-cache@v2 - run: cd naga; cargo xtask validate spv - run: cd naga; cargo xtask validate glsl - run: cd naga; cargo xtask validate dot - run: cd naga; cargo xtask validate wgsl