Skip to content

Handle more cases of undefined behaviour due to signed integer overflow or division by zero #7803

Handle more cases of undefined behaviour due to signed integer overflow or division by zero

Handle more cases of undefined behaviour due to signed integer overflow or division by zero #7803

Workflow file for this run

name: Shaders
on:
push:
branches-ignore: [
# We don't need to run on dependabot PRs.
"dependabot/**",
# 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.304"
# 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
- name: debug symbols to line-tables-only
shell: bash
run: |
mkdir -p .cargo
cat <<EOF >> .cargo/config.toml
[profile.dev]
debug = "line-tables-only"
EOF
- 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
- name: debug symbols to line-tables-only
shell: bash
run: |
mkdir -p .cargo
cat <<EOF >> .cargo/config.toml
[profile.dev]
debug = "line-tables-only"
EOF
- 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-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 <<EOF >> .cargo/config.toml
[profile.dev]
debug = "line-tables-only"
EOF
- 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