summaryrefslogtreecommitdiffstats
path: root/third_party/rust/naga/.github/workflows/lazy.yml
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/naga/.github/workflows/lazy.yml')
-rw-r--r--third_party/rust/naga/.github/workflows/lazy.yml162
1 files changed, 162 insertions, 0 deletions
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