name: Shaders on: push: branches: ["*"] 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. # # Held back from 1.3.290 by https://github.com/gfx-rs/wgpu/issues/6307 VULKAN_SDK_VERSION: "1.3.283" # Sourced from https://github.com/microsoft/DirectXShaderCompiler/releases # # Must also be changed in ci.yaml DXC_RELEASE: "v1.8.2407" DXC_FILENAME: "dxc_2024_07_31_clang_cl.zip" jobs: naga-validate-windows: name: "Validate: HLSL" runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 with: workspaces: | naga/xtask -> naga/xtask/target # 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,dxil.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 - uses: Swatinem/rust-cache@v2 with: workspaces: | naga/xtask -> naga/xtask/target - run: | cd naga cargo xtask validate msl naga-validate-linux: name: "Validate: SPIR-V/GLSL/DOT/WGSL" runs-on: ubuntu-latest 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-jammy.list https://packages.lunarg.com/vulkan/$VULKAN_SDK_VERSION/lunarg-vulkan-$VULKAN_SDK_VERSION-jammy.list sudo apt-get update sudo apt install -y vulkan-sdk - name: Install graphviz run: sudo apt-get install graphviz - uses: Swatinem/rust-cache@v2 with: workspaces: | naga/xtask -> naga/xtask/target - 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