There was an implicit `gpu-allocator` feature because there was no
`dep:` on the optional `gpu-allocator` dependency, but enabling the
`gpu-allocator` feature does nothing (there are no occurrences of
`#[feature = "gpu-allocator"]`) so it has no reason to exist.
* `
Delete the `naga::path_like` module, and simply using `String` and
`str` instead.
Nothing in Naga uses `Path` or `PathBuf` methods; indeed, Naga only
converts these values back and forth from string-like types with
`to_string_lossy` and `into`, such that using string-like, rather than
path-like, types actually simplifies the code.
This also avoids dead code warnings starting in Rust 1.89 that would
otherwise require distracting `#[cfg_attr]` conditionals.
* Features and draw commands added
* Tried to implement the pipeline creation (completely untested)
* Fixed clippy issues
* Fixed something I think
* A little bit of work on the mesh shader example (currently doesn't work on dx12)
* Reached a new kind of error state
* Fixed an alignment issue
* DirectX 12 mesh shaders working :party:
* Removed stupid change and updated changelog
* Fixed typo
* Added backends option to example framework
* Removed silly no write fragment shader from tests to see if anything breaks
* Tried to make mesh shader tests run elsewhere too
* Removed printlns and checked that dx12 mesh shader tests run
* Documented very strange issue
* I'm so lost
* Fixed stupid typos
* Fixed all issues
* Removed unnecessary example stuff, updated tests
* Updated typos.toml
* Updated limits
* Apply suggestion from @cwfitzgerald
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
* Apply suggestion from @cwfitzgerald
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
* Removed supported backends, made example & tests always pass the filename to shader compilers
* Removed excessive bools in test params
* Added new tests to the list
* I'm a sinner for this one (unused import)
* Replaced random stuff with test params hashing
* Updated typos.toml
* Updated -Fo typo thing
* Actually fixed typo issue this time
* Update CHANGELOG.md
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
* Update tests/tests/wgpu-gpu/mesh_shader/mod.rs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update wgpu-hal/src/dx12/mod.rs
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
* Addressed comments
* Lmao
---------
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
In order to support external textures, we must be able to map a single
external texture resource binding to multiple Vulkan descriptors. This
means we must be able to override the `Binding` and `DescriptorSet`
values for global variables when generating SPIR-V, rather than simply
passing through the group and binding values from Naga IR.
This patch extends the existing SPIR-V Naga backend's `BindingMap` to
contain a descriptor set and binding value in addition to the existing
array size. When creating BindGroupLayouts/BindGroups we use a
sequentially incrementing value for each entry's binding value,
continuing to just use the bind group index as the descriptor set
value.
The Naga backend looks up each resource in the map when emitting its
`Binding` and `DescriptorSet` decorations. If the entry cannot be
found in the map, it will either error or emit fake bindings based on
its configuration.
This is a refactoring of Vulkan BindGroupLayout and BindGroup creation
in preparation for implementing external texture support.
Currently when creating a BindGroupLayout the Vulkan backend creates a
list of the vk::DescriptorType for each entry, as well as the count, for
binding arrays. Then when creating the BindGroup, it iterates through
this list and does whatever it needs to do for each entry based on these
values.
In order to support external textures, we will have to create multiple
descriptors for each BindingType::ExternalTexture. This means we cannot
map each binding type to a single Vulkan descriptor type. Instead, store
the list of BindGroupLayoutEntries on the BindGroupLayout and use those
when creating the BindGroup, using the same "layout_and_entry_iter"
idiom used by other backends. In subsequent patches this will allow us
to create multiple descriptors for a single resource binding.
Although the operation of these functions is defined in terms of f16
semantics, the input/output types are not f16, and they are generally
available even when native `f16` support is not. But in at least one
case, they are only available with `f16` support, so add a new downlevel
flag that is cleared when these functions are not available.
Add some infrastructure to simplify testing of missing
capabilities/extensions, and add tests for a few more kinds of f16
usage.
Co-authored-by: Erich Gubler <erichdongubler@gmail.com>