diff --git a/.deny.toml b/.deny.toml index e29302dec..bc30cef5a 100644 --- a/.deny.toml +++ b/.deny.toml @@ -21,7 +21,6 @@ allow = [ "ISC", "MIT", "MIT-0", - "MPL-2.0", "Unicode-DFS-2016", "Zlib", ] diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1d6e14780..2a7eb39e4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,3 +2,4 @@ /cts_runner/ @gfx-rs/deno @gfx-rs/wgpu /deno_webgpu/ @gfx-rs/deno @gfx-rs/wgpu +/naga/ @gfx-rs/naga diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 077d75fef..76b847b6b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -239,6 +239,52 @@ jobs: # check wgpu-core with all features. This will also get wgpu-hal and wgpu-types. cargo check --target ${{ matrix.target }} --all-features -p wgpu-core + naga-minimal-versions: + name: MSRV naga Minimal Versions + runs-on: ubuntu-22.04 + + steps: + - name: checkout repo + uses: actions/checkout@v4 + + - name: Install Core MSRV toolchain + run: | + rustup toolchain install ${{ env.CORE_MSRV }} --no-self-update --profile=minimal --component clippy + rustup override set ${{ env.CORE_MSRV }} + cargo -V + + - name: Install Nightly toolchain + run: | + rustup toolchain install nightly --no-self-update --profile=minimal --component clippy + cargo +nightly -V + + - name: Install cargo-hack + uses: taiki-e/install-action@v2 + with: + tool: cargo-hack + + - name: disable debug + shell: bash + run: | + mkdir -p .cargo + echo """ + [profile.dev] + debug = false" >> .cargo/config.toml + + - name: Set Minimal Versions + shell: bash + run: | + set -e + + cargo +nightly hack generate-lockfile --remove-dev-deps -Z minimal-versions -p naga -p naga-cli + + - name: Clippy + shell: bash + run: | + set -e + + cargo clippy --all-features -p naga -p naga-cli + wasm-test: name: Test WebAssembly runs-on: ubuntu-latest @@ -378,6 +424,9 @@ jobs: cargo xtask test --llvm-cov + - name: check naga snapshots + run: git diff --exit-code -- naga/tests/out + - uses: actions/upload-artifact@v3 if: always() # We want artifacts even if the tests fail. with: diff --git a/.github/workflows/cts.yml b/.github/workflows/cts.yml deleted file mode 100644 index d6eb8903f..000000000 --- a/.github/workflows/cts.yml +++ /dev/null @@ -1,96 +0,0 @@ -name: CTS - -on: - push: - branches: [master, staging] - tags: [v0.*] - pull_request: - types: [labeled, opened, synchronize] - -env: - CARGO_INCREMENTAL: false - CARGO_TERM_COLOR: always - RUST_BACKTRACE: full - MSRV: "1.70" - -jobs: - cts: - # Only run if we add this label - if: contains(github.event.pull_request.labels.*.name, 'needs testing') - - strategy: - fail-fast: false - matrix: - include: - # Windows - - name: Windows x86_64 - os: windows-2019 - target: x86_64-pc-windows-msvc - backends: dx12 # dx11 - - # Linux - #- name: Linux x86_64 - # os: ubuntu-20.04 - # target: x86_64-unknown-linux-gnu - # backends: vulkan # gl - - name: CTS ${{ matrix.name }} - runs-on: ${{ matrix.os }} - - steps: - - name: checkout repo - uses: actions/checkout@v4 - with: - path: wgpu - - - name: checkout cts - run: | - git clone https://github.com/gpuweb/cts.git - cd cts - git checkout $(cat ../wgpu/cts_runner/revision.txt) - - - name: Install Repo MSRV toolchain - run: | - rustup toolchain install ${{ env.MSRV }} --no-self-update --profile=minimal --target ${{ matrix.target }} - rustup override set ${{ env.MSRV }} - cargo -V - - - name: caching - uses: Swatinem/rust-cache@v2 - with: - key: cts-a # suffix for cache busting - working-directory: wgpu/cts_runner - target-dir: wgpu/cts_runner/target - - - name: install llvmpipe and lavapipe - if: matrix.os == 'ubuntu-20.04' - run: | - sudo apt-get update -y -qq - sudo add-apt-repository ppa:oibaf/graphics-drivers -y - sudo apt-get update - sudo apt install -y libxcb-xfixes0-dev mesa-vulkan-drivers - # libegl1-mesa libgl1-mesa-dri for gl - - # We enable line numbers for panics, but that's it - - name: disable debug - shell: bash - run: | - mkdir -p wgpu/.cargo - echo """[profile.dev] - debug = 1" > wgpu/.cargo/config.toml - - - name: build CTS runner - run: | - cargo build --manifest-path wgpu/cts_runner/Cargo.toml - - - name: run CTS - shell: bash - run: | - cd cts; - for backend in ${{ matrix.backends }}; do - echo "======= CTS TESTS $backend ======"; - grep -v '^//' ../wgpu/cts_runner/test.lst | while IFS=$' \t\r\n' read test; do - echo "=== Running $test ==="; - DENO_WEBGPU_BACKEND=$backend cargo run --manifest-path ../wgpu/cts_runner/Cargo.toml --frozen -- ./tools/run_deno --verbose "$test"; - done - done diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e82c9422c..63e173727 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,4 +1,4 @@ -name: Documentation +name: Docs on: push: diff --git a/naga/.github/workflows/lazy.yml b/.github/workflows/lazy.yml similarity index 61% rename from naga/.github/workflows/lazy.yml rename to .github/workflows/lazy.yml index ab5e21f12..ef54b860d 100644 --- a/naga/.github/workflows/lazy.yml +++ b/.github/workflows/lazy.yml @@ -1,11 +1,11 @@ -# Lazy jobs running on master post merges. -name: lazy +# Lazy jobs running on trunk post merges. +name: Lazy on: - push: - branches: [master] pull_request: paths: - '.github/workflows/lazy.yml' + push: + branches: [trunk] env: CARGO_INCREMENTAL: false @@ -14,41 +14,50 @@ env: jobs: parse-dota2: - name: Parse Dota2 shaders + name: "Validate Shaders: Dota2" runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - run: mkdir data + - run: mkdir naga/data - name: Download shaders - run: curl https://user.fm/files/v2-5573e18b9f03f42c6ae53c392083da35/dota2-shaders.zip -o data/all.zip + run: curl https://user.fm/files/v2-5573e18b9f03f42c6ae53c392083da35/dota2-shaders.zip -o naga/data/all.zip - name: Unpack shaders - run: cd data && unzip all.zip + run: | + cd naga/data + unzip all.zip - name: Build Naga - run: cargo build --release --bin naga + run: | + cd naga + cargo build --release -p naga-cli - name: Convert shaders - run: for file in data/*.spv ; do echo "Translating" ${file} && target/release/naga --validate 27 ${file} ${file}.metal; done + run: | + cd naga + 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 + name: "Validate Shaders: Sascha Willems Vulkan Tutorial" runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Download shaders - run: git clone https://github.com/SaschaWillems/Vulkan.git + run: cd naga && git clone https://github.com/SaschaWillems/Vulkan.git - name: Build Naga - run: cargo build --release --bin naga + run: | + cd naga + cargo build --release -p naga-cli - name: Convert metal shaders run: | # No needed to stop workflow if we can't validate one file set +e + cd naga touch counter SUCCESS_RESULT_COUNT=0 FILE_COUNT=0 @@ -57,7 +66,7 @@ jobs: do echo "Convert: $fname" FILE_COUNT=$((FILE_COUNT+1)) - target/release/naga --validate 27 $(realpath ${fname}) out/$(basename ${fname}).metal + ../target/release/naga --validate 27 $(realpath ${fname}) out/$(basename ${fname}).metal if [[ $? -eq 0 ]]; then SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1)) fi @@ -66,26 +75,30 @@ jobs: cat counter dneto0_spirv-samples: - name: Parse dneto0 spirv-samples + name: "Validate Shaders: 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 + run: | + cd naga + git clone https://github.com/dneto0/spirv-samples.git - name: Build Naga - run: cargo build --release --bin naga + run: | + cargo build --release -p naga-cli - 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 + cd naga + 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 + cd naga/spirv-samples mkdir -p spv find "./spvasm" -name '*.spvasm' | while read fname; @@ -97,7 +110,7 @@ jobs: - name: Validate spv and generate wgsl run: | set +e - cd spirv-samples + cd naga/spirv-samples SUCCESS_RESULT_COUNT=0 FILE_COUNT=0 mkdir -p spv @@ -111,7 +124,7 @@ jobs: do echo "Convert: $fname" FILE_COUNT=$((FILE_COUNT+1)) - ../target/release/naga --validate 27 $(realpath ${fname}) ./wgsl/$(basename ${fname}).wgsl + ../../target/release/naga --validate 27 $(realpath ${fname}) ./wgsl/$(basename ${fname}).wgsl if [[ $? -eq 0 ]]; then SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1)) fi @@ -122,7 +135,7 @@ jobs: - name: Validate output wgsl run: | set +e - cd spirv-samples + cd naga/spirv-samples SUCCESS_RESULT_COUNT=0 FILE_COUNT=0 @@ -133,30 +146,10 @@ jobs: do echo "Validate: $fname" FILE_COUNT=$((FILE_COUNT+1)) - ../target/release/naga --validate 27 $(realpath ${fname}) + ../../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/.github/workflows/publish.yml b/.github/workflows/publish.yml index f0aa08696..978b788a3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,9 +2,8 @@ name: Publish on: push: - branches: ["*"] - pull_request: - merge_group: + branches: + - trunk env: CARGO_INCREMENTAL: false diff --git a/.github/workflows/shaders.yml b/.github/workflows/shaders.yml new file mode 100644 index 000000000..01047ee9f --- /dev/null +++ b/.github/workflows/shaders.yml @@ -0,0 +1,75 @@ +name: Shaders + +on: + push: + branches: ["*"] + tags: [v0.*] + pull_request: + merge_group: + +jobs: + naga-validate-windows: + name: "Validate: HLSL" + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + + - name: Setup DXC + uses: napokue/setup-dxc@v1.1.0 + + - 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 + + - uses: Swatinem/rust-cache@v2 + with: + workspaces: | + naga/xtask -> naga/xtask/target + + - run: | + cd naga + cargo xtask validate hlsl dxc + cargo xtask validate hlsl fxc + + naga-validate-macos: + name: "Validate: MSL" + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + + - 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@v3 + + - name: Install tools + run: sudo apt-get install spirv-tools glslang-tools 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 + diff --git a/CHANGELOG.md b/CHANGELOG.md index 172cb8982..725f72b99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Please add your PR to the changelog! Choose from a top level and bottom level category, then write your changes like follows: -- Describe your change in a user friendly format by @yourslug in [#9999](https://github.com/gfx-rs/wgpu/pull/2488) +- Describe your change in a user friendly format by @yourslug in [#99999](https://github.com/gfx-rs/wgpu/pull/99999) You can add additional user facing information if it's a major breaking change. You can use the following to help: @@ -38,6 +38,10 @@ Bottom level categories: - Hal --> +## Unreleased + +For naga changelogs at or before v0.14.0. See [naga's changelog](naga/CHANGELOG.md). + ## v0.18.0 (2023-10-25) ### Desktop OpenGL 3.3+ Support on Windows diff --git a/Cargo.lock b/Cargo.lock index 54835b556..a7bdbbe6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -93,6 +93,12 @@ dependencies = [ "libc", ] +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + [[package]] name = "anstream" version = "0.6.4" @@ -147,6 +153,46 @@ version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +[[package]] +name = "arbitrary" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "argh" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219" +dependencies = [ + "argh_derive", + "argh_shared", +] + +[[package]] +name = "argh_derive" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a" +dependencies = [ + "argh_shared", + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "argh_shared" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531" +dependencies = [ + "serde", +] + [[package]] name = "arrayref" version = "0.3.7" @@ -254,6 +300,15 @@ dependencies = [ "vsimd", ] +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -281,6 +336,7 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" dependencies = [ + "arbitrary", "serde", ] @@ -361,6 +417,12 @@ dependencies = [ "vec_map", ] +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cc" version = "1.0.83" @@ -392,6 +454,33 @@ dependencies = [ "libc", ] +[[package]] +name = "ciborium" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" + +[[package]] +name = "ciborium-ll" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "clap" version = "4.4.7" @@ -601,6 +690,66 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools", + "num-traits 0.2.17", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.9.0", + "scopeguard", +] + [[package]] name = "crossbeam-utils" version = "0.8.16" @@ -876,6 +1025,17 @@ dependencies = [ "deno_core", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -889,6 +1049,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + [[package]] name = "dispatch" version = "0.2.0" @@ -1468,6 +1634,12 @@ dependencies = [ "bitflags 2.4.1", ] +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + [[package]] name = "hashbrown" version = "0.14.2" @@ -1511,6 +1683,14 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" +[[package]] +name = "hlsl-snapshots" +version = "0.1.0" +dependencies = [ + "anyhow", + "nanoserde", +] + [[package]] name = "home" version = "0.5.5" @@ -1568,6 +1748,7 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ + "arbitrary", "equivalent", "hashbrown", "serde", @@ -1596,6 +1777,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -1774,6 +1964,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + [[package]] name = "metal" version = "0.27.0" @@ -1820,25 +2019,44 @@ dependencies = [ [[package]] name = "naga" version = "0.14.0" -source = "git+https://github.com/gfx-rs/naga?rev=92e41b43e437146b5d946eb238de963be1168016#92e41b43e437146b5d946eb238de963be1168016" dependencies = [ + "arbitrary", + "bincode", "bit-set", "bitflags 2.4.1", "codespan-reporting", + "criterion", + "diff", + "env_logger", "hexf-parse", + "hlsl-snapshots", "indexmap", "log", "num-traits 0.2.17", "petgraph", "pp-rs", + "ron", + "rspirv", "rustc-hash", "serde", - "spirv", + "spirv 0.2.0+1.5.4", "termcolor", "thiserror", "unicode-xid", ] +[[package]] +name = "naga-cli" +version = "0.14.0" +dependencies = [ + "argh", + "bincode", + "codespan-reporting", + "env_logger", + "log", + "naga", +] + [[package]] name = "nanorand" version = "0.7.0" @@ -1848,6 +2066,21 @@ dependencies = [ "getrandom 0.2.10", ] +[[package]] +name = "nanoserde" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a983d0b19ed0fcd803c4f04f9b20d5e6dd17e06d44d98742a0985ac45dab1bc" +dependencies = [ + "nanoserde-derive", +] + +[[package]] +name = "nanoserde-derive" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4dc96541767a4279572fdcf9f95af9cc1c9b2a2254e7a079203c81e206a9059" + [[package]] name = "ndk" version = "0.7.0" @@ -1915,7 +2148,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset", + "memoffset 0.6.5", ] [[package]] @@ -1928,7 +2161,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset", + "memoffset 0.6.5", ] [[package]] @@ -2139,6 +2372,12 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + [[package]] name = "orbclient" version = "0.3.46" @@ -2281,6 +2520,34 @@ dependencies = [ "winit 0.28.7", ] +[[package]] +name = "plotters" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +dependencies = [ + "num-traits 0.2.17", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" + +[[package]] +name = "plotters-svg" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +dependencies = [ + "plotters-backend", +] + [[package]] name = "pmutil" version = "0.6.1" @@ -2452,6 +2719,26 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "rayon" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.3.5" @@ -2517,6 +2804,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "rspirv" +version = "0.11.0+sdk-1.2.198" +source = "git+https://github.com/gfx-rs/rspirv?rev=b969f175d5663258b4891e44b76c1544da9661ab#b969f175d5663258b4891e44b76c1544da9661ab" +dependencies = [ + "rustc-hash", + "spirv 0.2.0+sdk-1.2.198", +] + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -2581,6 +2877,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -2828,6 +3133,15 @@ checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" dependencies = [ "bitflags 1.3.2", "num-traits 0.2.17", + "serde", +] + +[[package]] +name = "spirv" +version = "0.2.0+sdk-1.2.198" +source = "git+https://github.com/gfx-rs/rspirv?rev=b969f175d5663258b4891e44b76c1544da9661ab#b969f175d5663258b4891e44b76c1544da9661ab" +dependencies = [ + "bitflags 1.3.2", ] [[package]] @@ -2980,6 +3294,16 @@ dependencies = [ "strict-num", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -3205,6 +3529,16 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 114b4eb24..2123e89e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,27 +3,33 @@ resolver = "2" members = [ "cts_runner", "deno_webgpu", - "player", + + # default members "examples/*", - "wgpu", + "naga", + "naga-cli", + "player", + "tests", "wgpu-core", "wgpu-hal", "wgpu-info", "wgpu-macros", "wgpu-types", - "tests", + "wgpu", ] exclude = [] default-members = [ "examples/*", + "naga", + "naga-cli", "player", - "wgpu", + "tests", "wgpu-core", "wgpu-hal", "wgpu-info", "wgpu-macros", "wgpu-types", - "tests", + "wgpu", ] [workspace.package] @@ -52,8 +58,7 @@ path = "./wgpu-hal" version = "0.18.0" [workspace.dependencies.naga] -git = "https://github.com/gfx-rs/naga" -rev = "92e41b43e437146b5d946eb238de963be1168016" +path = "./naga" version = "0.14.0" [workspace.dependencies] @@ -161,7 +166,6 @@ tokio = "1.33.0" termcolor = "1.3.0" [patch."https://github.com/gfx-rs/naga"] -#naga = { path = "../naga" } [patch."https://github.com/zakarumych/gpu-descriptor"] #gpu-descriptor = { path = "../gpu-descriptor/gpu-descriptor" } @@ -170,7 +174,6 @@ termcolor = "1.3.0" #gpu-alloc = { path = "../gpu-alloc/gpu-alloc" } [patch.crates-io] -#naga = { path = "../naga" } #glow = { path = "../glow" } #d3d12 = { path = "../d3d12-rs" } #web-sys = { path = "../wasm-bindgen/crates/web-sys" } diff --git a/naga/cli/Cargo.toml b/naga-cli/Cargo.toml similarity index 97% rename from naga/cli/Cargo.toml rename to naga-cli/Cargo.toml index 00581905f..e5b19a106 100644 --- a/naga/cli/Cargo.toml +++ b/naga-cli/Cargo.toml @@ -18,7 +18,7 @@ argh = "0.1.5" [dependencies.naga] version = "0.14" -path = "../" +path = "../naga" features = [ "validate", "compact", diff --git a/naga/cli/src/bin/naga.rs b/naga-cli/src/bin/naga.rs similarity index 100% rename from naga/cli/src/bin/naga.rs rename to naga-cli/src/bin/naga.rs diff --git a/naga/.github/CODEOWNERS b/naga/.github/CODEOWNERS deleted file mode 100644 index 312b7e1bf..000000000 --- a/naga/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @gfx-rs/naga diff --git a/naga/.github/workflows/validation-linux.yml b/naga/.github/workflows/validation-linux.yml deleted file mode 100644 index 0c1525e7d..000000000 --- a/naga/.github/workflows/validation-linux.yml +++ /dev/null @@ -1,34 +0,0 @@ -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/*' - - 'xtask/**' - -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 - - - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - xtask -> target - - - run: cargo xtask validate spv - - - run: cargo xtask validate glsl - - - run: cargo xtask validate dot - - - run: cargo xtask validate wgsl diff --git a/naga/.github/workflows/validation-macos.yml b/naga/.github/workflows/validation-macos.yml deleted file mode 100644 index c06563dc1..000000000 --- a/naga/.github/workflows/validation-macos.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: validation-macos -on: - pull_request: - paths: - - '.github/workflows/validation-macos.yml' - - 'tests/out/msl/*.msl' - - 'xtask/**' - -jobs: - validate-macos: - name: MSL - runs-on: macos-latest - steps: - - uses: actions/checkout@v3 - - - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - xtask -> target - - - run: cargo xtask validate msl diff --git a/naga/.github/workflows/validation-windows.yml b/naga/.github/workflows/validation-windows.yml deleted file mode 100644 index 536b71d7b..000000000 --- a/naga/.github/workflows/validation-windows.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: validation-windows -on: - pull_request: - paths: - - '.github/workflows/validation-windows.yml' - - 'tests/out/hlsl/*.hlsl' - - 'tests/out/hlsl/*.ron' - - 'xtask/**' - - 'hlsl-snapshots/**' - -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 - - - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - xtask -> target - - - run: cargo xtask validate hlsl dxc - - 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 - - - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - xtask -> target - - - run: cargo xtask validate hlsl fxc diff --git a/naga/CHANGELOG.md b/naga/CHANGELOG.md index da7eb276d..d78bdb916 100644 --- a/naga/CHANGELOG.md +++ b/naga/CHANGELOG.md @@ -1,5 +1,7 @@ # Change Log +For changelogs after v0.14, see [the wgpu changelog](../CHANGELOG.md). + ## v0.14 (2023-10-25) #### GENERAL diff --git a/naga/Cargo.toml b/naga/Cargo.toml index c74a8cd86..91ed49a5c 100644 --- a/naga/Cargo.toml +++ b/naga/Cargo.toml @@ -15,12 +15,6 @@ rust-version = "1.65" [package.metadata.docs.rs] all-features = true -[profile.release] -panic = "abort" - -[profile.dev] -panic = "abort" - [features] default = [] clone = [] @@ -65,9 +59,11 @@ pp-rs = { version = "0.2.1", optional = true } hexf-parse = { version = "0.2.1", optional = true } unicode-xid = { version = "0.2.3", optional = true } +[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] +criterion = { version = "0.5", features = [] } + [dev-dependencies] bincode = "1" -criterion = { version = "0.5", features = [] } diff = "0.1" env_logger = "0.10" hlsl-snapshots = { path = "./hlsl-snapshots" } @@ -78,11 +74,3 @@ ron = "0.8.0" rspirv = { version = "0.11", git = "https://github.com/gfx-rs/rspirv", rev = "b969f175d5663258b4891e44b76c1544da9661ab" } serde = { version = "1.0", features = ["derive"] } spirv = { version = "0.2", features = ["deserialize"] } - -[workspace] -members = [".", "cli"] - -# Include "cli", so that `cargo run` runs the CLI by default. Include ".", so -# that `cargo test` includes naga's own tests by default (but note, using the -# features that `cli/Cargo.toml` requests). -default-members = [".", "cli"] diff --git a/naga/LICENSE-APACHE b/naga/LICENSE-APACHE deleted file mode 100644 index 261eeb9e9..000000000 --- a/naga/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/naga/LICENSE-MIT b/naga/LICENSE-MIT deleted file mode 100644 index 58acb754a..000000000 --- a/naga/LICENSE-MIT +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) [yyyy] [name of copyright owner] - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/naga/benches/criterion.rs b/naga/benches/criterion.rs index 9c0dc225f..697467faa 100644 --- a/naga/benches/criterion.rs +++ b/naga/benches/criterion.rs @@ -1,3 +1,4 @@ +#![cfg(not(target_arch = "wasm32"))] #![allow(clippy::needless_borrowed_reference)] use criterion::*; diff --git a/naga/codecov.yml b/naga/codecov.yml deleted file mode 100644 index 959972a69..000000000 --- a/naga/codecov.yml +++ /dev/null @@ -1 +0,0 @@ -comment: false \ No newline at end of file diff --git a/naga/fuzz/Cargo.toml b/naga/fuzz/Cargo.toml index 06c3e5a96..3bacdf348 100644 --- a/naga/fuzz/Cargo.toml +++ b/naga/fuzz/Cargo.toml @@ -4,6 +4,7 @@ version = "0.0.0" authors = ["Automatically generated"] publish = false edition = "2018" +license = "MIT OR Apache-2.0" [package.metadata] cargo-fuzz = true diff --git a/naga/hlsl-snapshots/Cargo.toml b/naga/hlsl-snapshots/Cargo.toml index 07620dcfd..39df45b5e 100644 --- a/naga/hlsl-snapshots/Cargo.toml +++ b/naga/hlsl-snapshots/Cargo.toml @@ -3,6 +3,7 @@ name = "hlsl-snapshots" version = "0.1.0" edition = "2021" publish = false +license = "MIT OR Apache-2.0" [dependencies] anyhow = "1" diff --git a/naga/src/back/msl/sampler.rs b/naga/src/back/msl/sampler.rs index 3b95fa378..0bf987076 100644 --- a/naga/src/back/msl/sampler.rs +++ b/naga/src/back/msl/sampler.rs @@ -156,6 +156,7 @@ pub struct InlineSampler { impl Eq for InlineSampler {} +#[allow(renamed_and_removed_lints)] #[allow(clippy::derive_hash_xor_eq)] impl std::hash::Hash for InlineSampler { fn hash(&self, hasher: &mut H) { diff --git a/naga/src/proc/mod.rs b/naga/src/proc/mod.rs index d50f165a5..8a6761058 100644 --- a/naga/src/proc/mod.rs +++ b/naga/src/proc/mod.rs @@ -607,6 +607,7 @@ impl GlobalCtx<'_> { } } + #[allow(dead_code)] pub(crate) fn eval_expr_to_literal( &self, handle: crate::Handle, diff --git a/naga/src/span.rs b/naga/src/span.rs index 0bc97ff46..5c617515f 100644 --- a/naga/src/span.rs +++ b/naga/src/span.rs @@ -189,7 +189,10 @@ impl WithSpan { } /// Add a new span with description. - #[cfg_attr(not(feature = "span"), allow(unused_variables, unused_mut))] + #[cfg_attr( + not(feature = "span"), + allow(unused_variables, unused_mut, clippy::missing_const_for_fn) + )] pub fn with_span(mut self, span: Span, description: S) -> Self where S: ToString, @@ -249,6 +252,7 @@ impl WithSpan { } #[cfg(not(feature = "span"))] + #[allow(clippy::missing_const_for_fn)] /// Return a [`SourceLocation`] for our first span, if we have one. pub fn location(&self, _source: &str) -> Option { None diff --git a/naga/tests/snapshots.rs b/naga/tests/snapshots.rs index c3455dd86..ed75805ae 100644 --- a/naga/tests/snapshots.rs +++ b/naga/tests/snapshots.rs @@ -143,8 +143,8 @@ impl Input { .expect("all files in snapshot input directory should have extensions"); let input = Input::new( Some(&subdirectory), - &file_name.file_stem().unwrap().to_str().unwrap(), - &extension.to_str().unwrap(), + file_name.file_stem().unwrap().to_str().unwrap(), + extension.to_str().unwrap(), ); input }), @@ -232,10 +232,8 @@ impl Input { let mut param_path = self.input_path(); param_path.set_extension("param.ron"); match fs::read_to_string(¶m_path) { - Ok(string) => ron::de::from_str(&string).expect(&format!( - "Couldn't parse param file: {}", - param_path.display() - )), + Ok(string) => ron::de::from_str(&string) + .unwrap_or_else(|_| panic!("Couldn't parse param file: {}", param_path.display())), Err(_) => Parameters::default(), } } @@ -277,10 +275,7 @@ fn check_targets( let info = naga::valid::Validator::new(naga::valid::ValidationFlags::all(), capabilities) .validate(module) - .expect(&format!( - "Naga module validation failed on test '{}'", - name.display() - )); + .unwrap_or_else(|_| panic!("Naga module validation failed on test '{}'", name.display())); #[cfg(feature = "compact")] let info = { @@ -297,10 +292,12 @@ fn check_targets( naga::valid::Validator::new(naga::valid::ValidationFlags::all(), capabilities) .validate(module) - .expect(&format!( - "Post-compaction module validation failed on test '{}'", - name.display() - )) + .unwrap_or_else(|_| { + panic!( + "Post-compaction module validation failed on test '{}'", + name.display() + ) + }) }; #[cfg(feature = "serialize")] @@ -576,7 +573,7 @@ fn write_output_hlsl( }); } - config.to_file(&input.output_path("hlsl", "ron")).unwrap(); + config.to_file(input.output_path("hlsl", "ron")).unwrap(); } #[cfg(feature = "wgsl-out")] diff --git a/naga/xtask/src/main.rs b/naga/xtask/src/main.rs index 48e3f5276..8325c1961 100644 --- a/naga/xtask/src/main.rs +++ b/naga/xtask/src/main.rs @@ -190,7 +190,7 @@ fn run(args: Args) -> anyhow::Result<()> { ValidateSubcommand::Wgsl => { visit_files(snapshots_base_out, "wgsl/*.wgsl", |path| { ack_visiting(path); - EasyCommand::new("cargo", |cmd| cmd.args(["run", "--"]).arg(path)).success() + EasyCommand::new("cargo", |cmd| cmd.args(["run", "-p", "naga-cli", "--"]).arg(path)).success() }) } ValidateSubcommand::Hlsl(cmd) => { diff --git a/wgpu-core/Cargo.toml b/wgpu-core/Cargo.toml index 755d35082..6ad0bedf7 100644 --- a/wgpu-core/Cargo.toml +++ b/wgpu-core/Cargo.toml @@ -79,8 +79,7 @@ smallvec = "1" thiserror = "1" [dependencies.naga] -git = "https://github.com/gfx-rs/naga" -rev = "92e41b43e437146b5d946eb238de963be1168016" +path = "../naga" version = "0.14.0" features = ["clone", "span", "validate"] diff --git a/wgpu-hal/Cargo.toml b/wgpu-hal/Cargo.toml index 0bb8ebed8..813fc7012 100644 --- a/wgpu-hal/Cargo.toml +++ b/wgpu-hal/Cargo.toml @@ -165,15 +165,13 @@ libc = "0.2" android_system_properties = "0.1.1" [dependencies.naga] -git = "https://github.com/gfx-rs/naga" -rev = "92e41b43e437146b5d946eb238de963be1168016" +path = "../naga" version = "0.14.0" features = ["clone"] # DEV dependencies [dev-dependencies.naga] -git = "https://github.com/gfx-rs/naga" -rev = "92e41b43e437146b5d946eb238de963be1168016" +path = "../naga" version = "0.14.0" features = ["wgsl-in"] diff --git a/xtask/src/test.rs b/xtask/src/test.rs index 23035146c..71e084f04 100644 --- a/xtask/src/test.rs +++ b/xtask/src/test.rs @@ -46,7 +46,7 @@ pub fn run_tests(mut args: Arguments) -> anyhow::Result<()> { xshell::cmd!( shell, - "cargo {llvm_cov_nextest_flags...} --no-fail-fast --retries 2" + "cargo {llvm_cov_nextest_flags...} --all-features --no-fail-fast --retries 2" ) .args(args.finish()) .quiet()