Commit Graph

7660 Commits

Author SHA1 Message Date
Nicolas Silva
1de04926b1
Add infrastructure for counting and reporting internal resources (#5708)
* Add an optional system for counting and reporting internal resources and events
* Count API objects in wgpu-hal
* Expose internal counters in wgpu-core and wgpu.
2024-06-24 11:20:10 +02:00
Jim Blandy
afc8e38fc1 [naga] Use HandleVec in Layouter.
Change `naga::proc::layouter::Layouter::layouts` to be a `HandleVec`,
not a `Vec`.
2024-06-24 10:32:49 +02:00
Jim Blandy
9f0a7cb184 [naga] Use HandleVec in ExpressionKindTracker.
Change `naga::proc::constant_evaluator::ExpressionKindTracker::inner`
from a `Vec` to a `HandleVec`, for better type-checking and more
convenient indexing. Change uses accordingly.
2024-06-24 10:32:34 +02:00
Jim Blandy
056d0db43e [naga] Use HandleVec in Typeifier.
Change `naga::front::Typifier::resolutions` to be a
`HandleVec<Expression, TypeResolution>`, not a plain `Vec`.
2024-06-24 10:32:20 +02:00
dependabot[bot]
4b485fdb0e
build(deps): bump crate-ci/typos from 1.22.7 to 1.22.9 (#5867)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.22.7 to 1.22.9.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crate-ci/typos/compare/v1.22.7...v1.22.9)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 09:11:59 +02:00
Erich Gubler
f227ca1258 docs(CHANGELOG): add entry for #5812
Permalink: <https://github.com/gfx-rs/wgpu/issues/5812>
2024-06-23 03:40:32 -07:00
Théo Monnom
0f6abc99ee
[naga-cli] add --defines options for the glsl parser (#5859) 2024-06-23 07:21:56 +00:00
Schell Carl Scivally
6405dcf611 [naga spv-in] Adjust types of globals used by atomic instructions.
To support atomic instructions in the SPIR-V front end, observe which
global variables the input accesses using atomic instructions, and
adjust their types from ordinary scalars to atomic values.

See comments in `naga::front::atomic_upgrade`.
2024-06-21 21:51:25 -07:00
Jim Blandy
717507977e [naga] Fix cargo doc --document-private-items. 2024-06-21 21:51:25 -07:00
Elabajaba
35477dff9a automatically check for subgroup support when creating a naga Validator 2024-06-21 10:20:25 +02:00
Jim Blandy
9b5035cee1 [naga] Introduce HandleVec.
Introduce a new type, `HandleVec<T, U>`, which is basically a
`Vec<U>`, except that it's indexed by values of type `Handle<T>`. This
gives us a more strictly typed way to build tables of data parallel to
some other `Arena`.

Change `naga:🔙:pipeline_constants` to use `HandleVec` instead of
`Vec`. This removes many calls to `Handle::index`, and makes the types
more informative.

In `naga:🔙:spv`, change `Writer` and `BlockContext` to use
`HandleVec` instead of `Vec` for various handle-indexed tables.
2024-06-21 10:16:01 +02:00
Jim Blandy
d6c4d5c5c3 [naga] Manually implement serde traits for NonMaxU32.
When the appropriate features are enabled, manually implement
`serde::Serialize` and `serde::Deserialize`, such that the serialized
form of `NonMaxU32::new(n).unwrap()` is the same as that of `n`.

This eliminates the last trace of 1-based indices from Naga's snapshot
tests, and aligns `std::fmt::Debug` with the serialized form.
2024-06-21 10:09:03 +02:00
Jim Blandy
090c906cb7 [naga] Simplify function names and comments.
Remove the phrase "zero-based" from comments and function names. Now
that there is no mix of zero-based and one-based indices, there's no
need to call out the distinction.
2024-06-21 10:09:03 +02:00
Jim Blandy
9f498fd571 [naga] Use new NonMaxU32 type for Handle indices.
Define a new type, `NonMaxU32`, that can represent any `u32` value
except `u32::MAX`, defined such that `Option<NonMaxU32>` is still a
32-bit value.

Change `Handle` to use `NonMaxU32`. Adjust all code that works
directly with handle indices to assume zero-based indices, not
one-based indices.
2024-06-21 10:09:03 +02:00
Jim Blandy
7721e33693 [naga] Delete unused constant Handle::DUMMY. 2024-06-21 10:09:03 +02:00
Jim Blandy
beb89f7956 [naga msl-out] Use Handle::write_prefixed instead of index.
This replaces all uses of `Handle::index` for generating identifiers
in `naga:🔙:msl` with uses of `Handle::write_prefixed`.

There are still some uses of `Handle::index` remaining.
2024-06-21 09:56:40 +02:00
Jim Blandy
29aa68e9a3 [naga dot-out] Use Handle::write_prefixed instead of index.
This replaces all uses of `Handle::index` in `naga:🔙:dot` with
uses of `Handle::write_prefixed`.
2024-06-21 09:56:40 +02:00
Jim Blandy
92287c30b5 [naga hlsl-out] Use Baked for baked expressions.
Make the HLSL backend more like other backends by using `back::Baked`
to generate names for baked expression identifiers. This removes the
final uses of `Handle::index` from the HLSL backend.

This is separated out from the previous commit because it changes lots
of snapshot tests, whereas the previous commit has no effect on Naga's
output.
2024-06-21 09:56:40 +02:00
Jim Blandy
2a3c35383a [naga] Introduce Baked newtype for writing baked expression names.
Introduce a newtype `naga:🔙:Baked` that wraps a
`Handle<Expression>` and formats with `std::fmt::Display` as a baked
expression identifier. Use this in all backends for generating baked
identifiers.

Delete `BAKE_PREFIX`, as it's no longer used outside of `Baked`'s
`Display` implementation.

This is a step towards making `Handle::index` less prominent in the
code base.
2024-06-21 09:56:40 +02:00
teoxoy
1e784c9c0a use TrackerIndex instead of IDs in PendingWrites's fields 2024-06-20 16:34:17 +02:00
teoxoy
2e1e1cd26e inline id getters 2024-06-20 16:34:17 +02:00
teoxoy
ef2da1a6d7 rename UsageConflict to ResourceUsageCompatibilityError 2024-06-20 16:34:17 +02:00
teoxoy
5f6848eddf remove IDs from UsageConflict variants 2024-06-20 16:34:17 +02:00
teoxoy
123a59ae7b change return type of ResourceMetadataProvider.get to &Arc<T> 2024-06-20 16:34:17 +02:00
teoxoy
26eceabe86 move body of BufferUsageScope.insert_merge_single in BufferUsageScope.merge_single 2024-06-20 16:34:17 +02:00
teoxoy
aaec1c37b9 take resource lookup out of BufferUsageScope.merge_single 2024-06-20 16:34:17 +02:00
teoxoy
f5072261c7 remove ID from QueueSubmitError::BufferStillMapped 2024-06-20 16:34:17 +02:00
teoxoy
b0d2517bf4 change BindGroup.raw to BindGroup.try_raw 2024-06-20 16:34:17 +02:00
teoxoy
08f5eb82cd introduce TextureView.try_raw 2024-06-20 16:34:17 +02:00
teoxoy
7bd9195aa2 take resource lookup out of StatelessTracker.add_single 2024-06-20 16:34:17 +02:00
teoxoy
2ec7254772 remove old comment 2024-06-20 16:34:17 +02:00
teoxoy
a024afe182 consolidate destroyed texture/buffer errors and separate them from invalid ID errors 2024-06-20 16:34:17 +02:00
teoxoy
97a038a768 make return type of TextureTracker.set_single non-optional 2024-06-20 16:34:17 +02:00
teoxoy
d2218398ff take buffer lookup out of BufferBindGroupState.add_single 2024-06-20 16:34:17 +02:00
teoxoy
6a181fa634 remove IDs from StatelessBindGroupState 2024-06-20 16:34:17 +02:00
teoxoy
a979d2ed46 simplify BufferTracker.set_single's return type 2024-06-20 16:34:17 +02:00
teoxoy
862f19524f make check_texture_usage a texture method 2024-06-20 16:34:17 +02:00
teoxoy
87382d7133 make check_buffer_usage a buffer method 2024-06-20 16:34:17 +02:00
teoxoy
068da49a4c use error_ident for log instead of ID 2024-06-20 16:34:17 +02:00
teoxoy
836f016dcd use the tracker index as key in hashmap instead of ID 2024-06-20 16:34:17 +02:00
teoxoy
0c4b449644 use Arc::ptr_eq for resource equality 2024-06-20 16:34:17 +02:00
teoxoy
a21bbdccf0 remove usage of Buffer IDs in clear code 2024-06-20 16:34:17 +02:00
teoxoy
8465a64104 remove usage of Texture IDs in clear code 2024-06-20 16:34:17 +02:00
teoxoy
2a7f09aebc make clear_texture_via_render_passes infallible (in practice it was already) 2024-06-20 16:34:17 +02:00
teoxoy
8d805c99d3 remove TextureBindGroupState.add_single's return type 2024-06-20 16:34:17 +02:00
teoxoy
43177d78d6 replace uses of Id.backend() with A::VARIANT 2024-06-20 16:34:17 +02:00
Andreas Reich
7b89b6d959
Fix web example build (#5832)
* Ensure webgl example build only contains webgl and webgpu example build only contains webgpu
* fix ip printed on run-wasm
* Update examples on running examples on the web
2024-06-20 15:52:49 +02:00
Jim Blandy
584f9e189c [core] Improve resource and api logging.
- Improve logging in `StatelessTracker::remove_abandoned` to show the
  outcome of the call.

- Add similar logging to `BufferTracker` and `TextureTracker`.

- Let `device_create_buffer`'s log only the new buffer's label, id,
  and whether it's mapped at creation. It used to show the whole
  descriptor, which is too much detail.

- Have `queue_submit` log the submission id, and have `device_poll`
  log what it was waiting for, and what actually got done.

- Have `Device::drop` log the destruction of the raw device when it
  actually happens, so it's properly ordered with respect to logging
  from other parts of the device, like `Device::command_allocator`.
2024-06-19 21:13:38 -07:00
barrett
d4b3856031
docs(readme): use emoji literals instead of shortcodes (#5843)
Otherwise, the emojis aren't parsed on Crates.io, leaving the table without much utility unless a user navigates to GitHub.

Fixes like these are very simple, but super helpful for some users! :)
2024-06-19 18:07:59 +00:00
teoxoy
284c807abc reorder map_async validation steps 2024-06-19 14:05:18 +02:00