Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Speed up Naga's cargo xtask validate wgsl from 12s to 0.8s #4871

Merged
merged 3 commits into from
Dec 24, 2023

Conversation

jimblandy
Copy link
Member

@jimblandy jimblandy commented Dec 13, 2023

Implement a --bulk-validate option in the Naga CLI, and use it in Naga's cargo xtask validate wgsl to validate all WGSL files in a single execution. This reduces real time from 12s to 0.8s.

Checklist

  • Run cargo fmt.
  • Run cargo clippy.
  • Run cargo xtask test to run tests.
  • Add change to CHANGELOG.md. See simple instructions inside file.

@jimblandy jimblandy requested a review from a team as a code owner December 13, 2023 00:01
@jimblandy jimblandy force-pushed the naga-wgsl-bulk-validate branch from 7d16e4b to e9eaf7a Compare December 13, 2023 00:03
@jimblandy
Copy link
Member Author

jimblandy commented Dec 13, 2023

I have the feeling this code isn't the greatest. I wanted to get it out there and then just do whatever people tell me to do.

Copy link
Member

@ErichDonGubler ErichDonGubler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jimblandy: I don't think I have enough context to authoritatively respond to your implicit plea for validation of code quality WRT the Naga CLI experience, so I'll ask: do you feel like it concretely comes up short in some way, or doesn't fit well into the existing experience? I didn't see anything obvious (as a newcomer).

naga-cli/src/bin/naga.rs Show resolved Hide resolved
naga-cli/src/bin/naga.rs Show resolved Hide resolved
naga/xtask/src/main.rs Show resolved Hide resolved
@ErichDonGubler ErichDonGubler enabled auto-merge (rebase) December 21, 2023 20:51
@ErichDonGubler
Copy link
Member

Looks like we need a @gfx-rs/naga review here still. Do you think it's worth waiting for @teoxoy, @jimblandy?

@jimblandy
Copy link
Member Author

Looks like we need a @gfx-rs/naga review here still. Do you think it's worth waiting for @teoxoy, @jimblandy?

Maybe for this it's okay.

@jimblandy jimblandy force-pushed the naga-wgsl-bulk-validate branch from e9eaf7a to 05f1fb9 Compare December 24, 2023 19:24
@jimblandy jimblandy disabled auto-merge December 24, 2023 19:27
@jimblandy
Copy link
Member Author

Merging without review from code owners, as this is a pretty simple change that doesn't affect Naga itself.

@jimblandy jimblandy merged commit 9afd54e into gfx-rs:trunk Dec 24, 2023
27 checks passed
moz-v2v-gh pushed a commit to mozilla/gecko-dev that referenced this pull request Jan 3, 2024
…225e1744fd7. r=webgpu-reviewers,supply-chain-reviewers,teoxoy

Changelog:

 * #4865 fix present mode for wgl
   By xiaopengli89 in gfx-rs/wgpu#4865
 * #4873 Bump ctor from 0.2.5 to 0.2.6
   By dependabot[bot] in gfx-rs/wgpu#4873
 * #4874 Bump syn from 2.0.40 to 2.0.41
   By dependabot[bot] in gfx-rs/wgpu#4874
 * #4869 [naga wgsl-out] Include the `f` suffix on `f32` literals.
   By jimblandy in gfx-rs/wgpu#4869
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4870 [naga wgsl] Let unary operators accept and produce abstract types.
   By jimblandy in gfx-rs/wgpu#4870
 * #4867 Reintroduce buffer snatching Part 1
   By nical in gfx-rs/wgpu#4867
 * #4882 Bump zerocopy from 0.7.26 to 0.7.31
   By dependabot[bot] in gfx-rs/wgpu#4882
 * #4878 Buffer snatching part 2 - Refactor create_buffer
   By nical in gfx-rs/wgpu#4878
 * #4815 Add `wgpu` crate features for backends
   By daxpedda in gfx-rs/wgpu#4815
 * #4887 Allow clippy::pattern_type_mismatch
   By nical in gfx-rs/wgpu#4887
 * #4886 Document wgpu & wgpu-core features
   By Wumpf in gfx-rs/wgpu#4886
 * #4826 validation: More detailed on incompatible BGL
   By scoopr in gfx-rs/wgpu#4826
 * #4888 Web: add support for more `RawWindowHandle` variants
   By daxpedda in gfx-rs/wgpu#4888
 * #4890 Bump thiserror from 1.0.50 to 1.0.51
   By dependabot[bot] in gfx-rs/wgpu#4890
 * #4880 Simplify `ResourceMaps`
   By nical in gfx-rs/wgpu#4880
 * #4891 Make the naga version in trunk as high as the latest published one
   By nical in gfx-rs/wgpu#4891
 * #4893 Avoid allocating memory every time we might log a label
   By nical in gfx-rs/wgpu#4893
 * #4894 Remove some locks in BindGroup
   By nical in gfx-rs/wgpu#4894
 * #4862 Ensure that DeviceLostCallbackC is always called exactly once
   By bradwerth in gfx-rs/wgpu#4862
 * #4900 Support Device fence sharing with dx12 on Windows
   By sotaroikeda in gfx-rs/wgpu#4900
 * #4903 Bump tokio from 1.35.0 to 1.35.1
   By dependabot[bot] in gfx-rs/wgpu#4903
 * #4895 Check that raw buffers and raw bind groups are valid
   By nical in gfx-rs/wgpu#4895
 * #4901 fix: docs
   By miaobuao in gfx-rs/wgpu#4901
 * #4892 Simplify some code around buffer unmapping
   By nical in gfx-rs/wgpu#4892
 * #4896 Buffer snatching
   By nical in gfx-rs/wgpu#4896
 * #4851 Eagerly release GPU resources when we lose the device.
   By bradwerth in gfx-rs/wgpu#4851
 * #4906 Use nightly for docs
   By cwfitzgerald in gfx-rs/wgpu#4906
 * #4908 Bump syn from 2.0.41 to 2.0.42
   By dependabot[bot] in gfx-rs/wgpu#4908
 * #4909 Bump profiling from 1.0.12 to 1.0.13
   By dependabot[bot] in gfx-rs/wgpu#4909
 * #4910 Bump anyhow from 1.0.75 to 1.0.76
   By dependabot[bot] in gfx-rs/wgpu#4910
 * #4913 Remove id32 Feature
   By cwfitzgerald in gfx-rs/wgpu#4913
 * #4914 Add BGL Deduplication Index Test
   By cwfitzgerald in gfx-rs/wgpu#4914
 * #4921 Fix typo "layout pipeline layout" -> "pipeline layout"
   By HactarCE in gfx-rs/wgpu#4921
 * #4922 Bump winit from 0.29.4 to 0.29.5
   By dependabot[bot] in gfx-rs/wgpu#4922
 * #4924 Inline `document-features` usage, remove dep.
   By ErichDonGubler in gfx-rs/wgpu#4924
 * #4871 Speed up Naga's `cargo xtask validate wgsl` from 12s to 0.8s
   By jimblandy in gfx-rs/wgpu#4871
 * #4871 Speed up Naga's `cargo xtask validate wgsl` from 12s to 0.8s
   By jimblandy in gfx-rs/wgpu#4871
 * #4871 Speed up Naga's `cargo xtask validate wgsl` from 12s to 0.8s
   By jimblandy in gfx-rs/wgpu#4871
 * #4930 Bump winit from 0.29.5 to 0.29.6
   By dependabot[bot] in gfx-rs/wgpu#4930
 * #4929 Bump web-time from 0.2.3 to 0.2.4
   By dependabot[bot] in gfx-rs/wgpu#4929
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4940 Align `wgpu_types::CompositeAlphaMode` serde serializations to spec
   By littledivy in gfx-rs/wgpu#4940
 * #4936 Bump anyhow from 1.0.76 to 1.0.77
   By dependabot[bot] in gfx-rs/wgpu#4936
 * #4933 Bump thiserror from 1.0.51 to 1.0.52
   By dependabot[bot] in gfx-rs/wgpu#4933
 * #4932 Bump syn from 2.0.42 to 2.0.43
   By dependabot[bot] in gfx-rs/wgpu#4932

Differential Revision: https://phabricator.services.mozilla.com/D197519
ErichDonGubler pushed a commit to erichdongubler-mozilla/firefox that referenced this pull request Jan 5, 2024
…225e1744fd7. r=webgpu-reviewers,supply-chain-reviewers,teoxoy

Changelog:

 * #4865 fix present mode for wgl
   By xiaopengli89 in gfx-rs/wgpu#4865
 * #4873 Bump ctor from 0.2.5 to 0.2.6
   By dependabot[bot] in gfx-rs/wgpu#4873
 * #4874 Bump syn from 2.0.40 to 2.0.41
   By dependabot[bot] in gfx-rs/wgpu#4874
 * #4869 [naga wgsl-out] Include the `f` suffix on `f32` literals.
   By jimblandy in gfx-rs/wgpu#4869
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4850 [naga wgsl-in] Support abstract operands to binary operators.
   By jimblandy in gfx-rs/wgpu#4850
 * #4870 [naga wgsl] Let unary operators accept and produce abstract types.
   By jimblandy in gfx-rs/wgpu#4870
 * #4867 Reintroduce buffer snatching Part 1
   By nical in gfx-rs/wgpu#4867
 * #4882 Bump zerocopy from 0.7.26 to 0.7.31
   By dependabot[bot] in gfx-rs/wgpu#4882
 * #4878 Buffer snatching part 2 - Refactor create_buffer
   By nical in gfx-rs/wgpu#4878
 * #4815 Add `wgpu` crate features for backends
   By daxpedda in gfx-rs/wgpu#4815
 * #4887 Allow clippy::pattern_type_mismatch
   By nical in gfx-rs/wgpu#4887
 * #4886 Document wgpu & wgpu-core features
   By Wumpf in gfx-rs/wgpu#4886
 * #4826 validation: More detailed on incompatible BGL
   By scoopr in gfx-rs/wgpu#4826
 * #4888 Web: add support for more `RawWindowHandle` variants
   By daxpedda in gfx-rs/wgpu#4888
 * #4890 Bump thiserror from 1.0.50 to 1.0.51
   By dependabot[bot] in gfx-rs/wgpu#4890
 * #4880 Simplify `ResourceMaps`
   By nical in gfx-rs/wgpu#4880
 * #4891 Make the naga version in trunk as high as the latest published one
   By nical in gfx-rs/wgpu#4891
 * #4893 Avoid allocating memory every time we might log a label
   By nical in gfx-rs/wgpu#4893
 * #4894 Remove some locks in BindGroup
   By nical in gfx-rs/wgpu#4894
 * #4862 Ensure that DeviceLostCallbackC is always called exactly once
   By bradwerth in gfx-rs/wgpu#4862
 * #4900 Support Device fence sharing with dx12 on Windows
   By sotaroikeda in gfx-rs/wgpu#4900
 * #4903 Bump tokio from 1.35.0 to 1.35.1
   By dependabot[bot] in gfx-rs/wgpu#4903
 * #4895 Check that raw buffers and raw bind groups are valid
   By nical in gfx-rs/wgpu#4895
 * #4901 fix: docs
   By miaobuao in gfx-rs/wgpu#4901
 * #4892 Simplify some code around buffer unmapping
   By nical in gfx-rs/wgpu#4892
 * #4896 Buffer snatching
   By nical in gfx-rs/wgpu#4896
 * #4851 Eagerly release GPU resources when we lose the device.
   By bradwerth in gfx-rs/wgpu#4851
 * #4906 Use nightly for docs
   By cwfitzgerald in gfx-rs/wgpu#4906
 * #4908 Bump syn from 2.0.41 to 2.0.42
   By dependabot[bot] in gfx-rs/wgpu#4908
 * #4909 Bump profiling from 1.0.12 to 1.0.13
   By dependabot[bot] in gfx-rs/wgpu#4909
 * #4910 Bump anyhow from 1.0.75 to 1.0.76
   By dependabot[bot] in gfx-rs/wgpu#4910
 * #4913 Remove id32 Feature
   By cwfitzgerald in gfx-rs/wgpu#4913
 * #4914 Add BGL Deduplication Index Test
   By cwfitzgerald in gfx-rs/wgpu#4914
 * #4921 Fix typo "layout pipeline layout" -> "pipeline layout"
   By HactarCE in gfx-rs/wgpu#4921
 * #4922 Bump winit from 0.29.4 to 0.29.5
   By dependabot[bot] in gfx-rs/wgpu#4922
 * #4924 Inline `document-features` usage, remove dep.
   By ErichDonGubler in gfx-rs/wgpu#4924
 * #4871 Speed up Naga's `cargo xtask validate wgsl` from 12s to 0.8s
   By jimblandy in gfx-rs/wgpu#4871
 * #4871 Speed up Naga's `cargo xtask validate wgsl` from 12s to 0.8s
   By jimblandy in gfx-rs/wgpu#4871
 * #4871 Speed up Naga's `cargo xtask validate wgsl` from 12s to 0.8s
   By jimblandy in gfx-rs/wgpu#4871
 * #4930 Bump winit from 0.29.5 to 0.29.6
   By dependabot[bot] in gfx-rs/wgpu#4930
 * #4929 Bump web-time from 0.2.3 to 0.2.4
   By dependabot[bot] in gfx-rs/wgpu#4929
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4902 [naga xtask] Run validation jobs in parallel, using jobserver.
   By jimblandy in gfx-rs/wgpu#4902
 * #4940 Align `wgpu_types::CompositeAlphaMode` serde serializations to spec
   By littledivy in gfx-rs/wgpu#4940
 * #4936 Bump anyhow from 1.0.76 to 1.0.77
   By dependabot[bot] in gfx-rs/wgpu#4936
 * #4933 Bump thiserror from 1.0.51 to 1.0.52
   By dependabot[bot] in gfx-rs/wgpu#4933
 * #4932 Bump syn from 2.0.42 to 2.0.43
   By dependabot[bot] in gfx-rs/wgpu#4932

Differential Revision: https://phabricator.services.mozilla.com/D197519
@jimblandy jimblandy deleted the naga-wgsl-bulk-validate branch March 31, 2024 18:05
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants