summaryrefslogtreecommitdiffstats
path: root/third_party/rust/naga/.github
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/naga/.github')
-rw-r--r--third_party/rust/naga/.github/workflows/ci.yml94
-rw-r--r--third_party/rust/naga/.github/workflows/lazy.yml162
-rw-r--r--third_party/rust/naga/.github/workflows/validation-linux.yml28
-rw-r--r--third_party/rust/naga/.github/workflows/validation-macos.yml15
-rw-r--r--third_party/rust/naga/.github/workflows/validation-windows.yml37
5 files changed, 336 insertions, 0 deletions
diff --git a/third_party/rust/naga/.github/workflows/ci.yml b/third_party/rust/naga/.github/workflows/ci.yml
new file mode 100644
index 0000000000..ce951216b9
--- /dev/null
+++ b/third_party/rust/naga/.github/workflows/ci.yml
@@ -0,0 +1,94 @@
+name: CI
+on: [push, pull_request]
+
+env:
+ CARGO_INCREMENTAL: false
+ CARGO_TERM_COLOR: always
+ RUST_BACKTRACE: full
+ MSRV: 1.63
+
+jobs:
+ check-msrv:
+ name: Check MSRV and minimal-versions
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install MSRV toolchain
+ run: rustup toolchain install $MSRV --no-self-update --profile=minimal --component clippy
+
+ - name: Install nightly toolchain
+ run: rustup toolchain install nightly --no-self-update --profile=minimal
+
+ - name: Install cargo-hack
+ uses: taiki-e/install-action@v2
+ with:
+ tool: cargo-hack
+
+ # -Z avoid-dev-deps doesn't work
+ - run: cargo +nightly hack generate-lockfile --remove-dev-deps -Z minimal-versions --offline
+
+ - name: Test all features
+ run: cargo +$MSRV clippy --all-features --workspace -- -D warnings
+
+ test:
+ name: Test
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install cargo-nextest and cargo-llvm-cov
+ uses: taiki-e/install-action@v2
+ with:
+ tool: cargo-nextest,cargo-llvm-cov
+
+ - name: Default test
+ # Our intention here is to test `naga` with no features enabled. But
+ # since `cli` is the default package, a plain `cargo test` will build
+ # `naga` with the features requested in `cli/Cargo.toml`. Passing
+ # `--package naga` causes us to use the default features in the
+ # top-level `Cargo.toml` instead.
+ run: cargo nextest run --package naga
+
+ - name: Test all features
+ run: cargo llvm-cov --lcov --output-path lcov.info nextest --all-features --workspace
+
+ - name: Upload coverage report to codecov
+ uses: codecov/codecov-action@v3
+ with:
+ files: lcov.info
+
+ - name: Check snapshots
+ run: git diff --exit-code -- tests/out
+
+ check:
+ name: Check benchmarks and naga-fuzz
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Check benchmarks
+ run: cargo check --benches
+
+ - name: Check naga-fuzz
+ run: |
+ cd fuzz
+ cargo check
+
+ documentation:
+ name: Documentation
+ runs-on: ubuntu-latest
+ env:
+ RUSTDOCFLAGS: -Dwarnings
+ steps:
+ - uses: actions/checkout@v3
+
+ - run: cargo doc -p naga --all-features --document-private-items
+
+ fmt:
+ name: Format
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - run: cargo fmt -- --check
diff --git a/third_party/rust/naga/.github/workflows/lazy.yml b/third_party/rust/naga/.github/workflows/lazy.yml
new file mode 100644
index 0000000000..ab5e21f129
--- /dev/null
+++ b/third_party/rust/naga/.github/workflows/lazy.yml
@@ -0,0 +1,162 @@
+# Lazy jobs running on master post merges.
+name: lazy
+on:
+ push:
+ branches: [master]
+ pull_request:
+ paths:
+ - '.github/workflows/lazy.yml'
+
+env:
+ CARGO_INCREMENTAL: false
+ CARGO_TERM_COLOR: always
+ RUST_BACKTRACE: full
+
+jobs:
+ parse-dota2:
+ name: Parse Dota2 shaders
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - run: mkdir data
+
+ - name: Download shaders
+ run: curl https://user.fm/files/v2-5573e18b9f03f42c6ae53c392083da35/dota2-shaders.zip -o data/all.zip
+
+ - name: Unpack shaders
+ run: cd data && unzip all.zip
+
+ - name: Build Naga
+ run: cargo build --release --bin naga
+
+ - name: Convert shaders
+ run: for file in data/*.spv ; do echo "Translating" ${file} && target/release/naga --validate 27 ${file} ${file}.metal; done
+
+ parse-vulkan-tutorial-shaders:
+ name: Parse Sascha Willems Vulkan tutorial shaders
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Download shaders
+ run: git clone https://github.com/SaschaWillems/Vulkan.git
+
+ - name: Build Naga
+ run: cargo build --release --bin naga
+
+ - name: Convert metal shaders
+ run: |
+ # No needed to stop workflow if we can't validate one file
+ set +e
+ touch counter
+ SUCCESS_RESULT_COUNT=0
+ FILE_COUNT=0
+ mkdir -p out
+ find "Vulkan/data/shaders/glsl/" -name '*.spv' | while read fname;
+ do
+ echo "Convert: $fname"
+ FILE_COUNT=$((FILE_COUNT+1))
+ target/release/naga --validate 27 $(realpath ${fname}) out/$(basename ${fname}).metal
+ if [[ $? -eq 0 ]]; then
+ SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1))
+ fi
+ echo "Result: $(expr $FILE_COUNT - $SUCCESS_RESULT_COUNT) / $FILE_COUNT" > counter
+ done
+ cat counter
+
+ dneto0_spirv-samples:
+ name: Parse dneto0 spirv-samples
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Download shaders
+ run: git clone https://github.com/dneto0/spirv-samples.git
+
+ - name: Build Naga
+ run: cargo build --release --bin naga
+
+ - name: Install spirv-tools
+ run: |
+ wget -q https://storage.googleapis.com/spirv-tools/artifacts/prod/graphics_shader_compiler/spirv-tools/linux-clang-release/continuous/1489/20210629-121459/install.tgz
+ tar zxf install.tgz
+ ./install/bin/spirv-as --version
+
+ - name: Compile spv from spvasm
+ run: |
+ cd spirv-samples
+ mkdir -p spv
+
+ find "./spvasm" -name '*.spvasm' | while read fname;
+ do
+ echo "Convert to spv with spirv-as: $fname"
+ ../install/bin/spirv-as --target-env spv1.3 $(realpath ${fname}) -o ./spv/$(basename ${fname}).spv
+ done;
+
+ - name: Validate spv and generate wgsl
+ run: |
+ set +e
+ cd spirv-samples
+ SUCCESS_RESULT_COUNT=0
+ FILE_COUNT=0
+ mkdir -p spv
+ mkdir -p wgsl
+
+ echo "==== Validate spv and generate wgsl ===="
+ rm -f counter
+ touch counter
+
+ find "./spv" -name '*.spv' | while read fname;
+ do
+ echo "Convert: $fname"
+ FILE_COUNT=$((FILE_COUNT+1))
+ ../target/release/naga --validate 27 $(realpath ${fname}) ./wgsl/$(basename ${fname}).wgsl
+ if [[ $? -eq 0 ]]; then
+ SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1))
+ fi
+ echo "Result: $(expr $FILE_COUNT - $SUCCESS_RESULT_COUNT) / $FILE_COUNT" > counter
+ done
+ cat counter
+
+ - name: Validate output wgsl
+ run: |
+ set +e
+ cd spirv-samples
+ SUCCESS_RESULT_COUNT=0
+ FILE_COUNT=0
+
+ rm -f counter
+ touch counter
+
+ find "./wgsl" -name '*.wgsl' | while read fname;
+ do
+ echo "Validate: $fname"
+ FILE_COUNT=$((FILE_COUNT+1))
+ ../target/release/naga --validate 27 $(realpath ${fname})
+ if [[ $? -eq 0 ]]; then
+ SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1))
+ fi
+ echo "Result: $(expr $FILE_COUNT - $SUCCESS_RESULT_COUNT) / $FILE_COUNT" > counter
+ done
+ cat counter
+
+ check-snapshots-extra:
+ name: Check snapshots (validated or not)
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install cargo-nextest
+ uses: taiki-e/install-action@v2
+ with:
+ tool: cargo-nextest
+
+ - name: Test minimal (without span)
+ run: cargo nextest run --features validate -p naga
+
+ - name: Test all (without validation)
+ run: cargo nextest run --features wgsl-in,wgsl-out,glsl-in,glsl-out,spv-in,spv-out,msl-out,hlsl-out,dot-out --workspace
+
+ - name: Check snapshots (without validation)
+ run: git diff --exit-code -- tests/out
diff --git a/third_party/rust/naga/.github/workflows/validation-linux.yml b/third_party/rust/naga/.github/workflows/validation-linux.yml
new file mode 100644
index 0000000000..e253e0a42e
--- /dev/null
+++ b/third_party/rust/naga/.github/workflows/validation-linux.yml
@@ -0,0 +1,28 @@
+name: validation-linux
+on:
+ pull_request:
+ paths:
+ - '.github/workflows/validation-linux.yml'
+ - 'tests/out/spv/*.spvasm'
+ - 'tests/out/glsl/*.glsl'
+ - 'tests/out/dot/*.dot'
+ - 'tests/out/wgsl/*.wgsl'
+ - 'src/front/wgsl/*'
+
+jobs:
+ validate-linux:
+ name: SPIR-V + GLSL
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install tools
+ run: sudo apt-get install spirv-tools glslang-tools graphviz
+
+ - run: make validate-spv
+
+ - run: make validate-glsl
+
+ - run: make validate-dot
+
+ - run: make validate-wgsl
diff --git a/third_party/rust/naga/.github/workflows/validation-macos.yml b/third_party/rust/naga/.github/workflows/validation-macos.yml
new file mode 100644
index 0000000000..535a0622b3
--- /dev/null
+++ b/third_party/rust/naga/.github/workflows/validation-macos.yml
@@ -0,0 +1,15 @@
+name: validation-macos
+on:
+ pull_request:
+ paths:
+ - '.github/workflows/validation-macos.yml'
+ - 'tests/out/msl/*.msl'
+
+jobs:
+ validate-macos:
+ name: MSL
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - run: make validate-msl
diff --git a/third_party/rust/naga/.github/workflows/validation-windows.yml b/third_party/rust/naga/.github/workflows/validation-windows.yml
new file mode 100644
index 0000000000..03942a6782
--- /dev/null
+++ b/third_party/rust/naga/.github/workflows/validation-windows.yml
@@ -0,0 +1,37 @@
+name: validation-windows
+on:
+ pull_request:
+ paths:
+ - '.github/workflows/validation-windows.yml'
+ - 'tests/out/hlsl/*.hlsl'
+
+jobs:
+ validate-windows-dxc:
+ name: HLSL via DXC
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Add DirectXShaderCompiler
+ uses: napokue/setup-dxc@v1.1.0
+
+ - run: make validate-hlsl-dxc
+ shell: sh
+
+ validate-windows-fxc:
+ name: HLSL via FXC
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Add fxc bin to PATH
+ 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
+
+ - run: make validate-hlsl-fxc
+ shell: sh