teoxoy
b42500ee40
[wgpu-core] use Fallible
for BindGroup
2024-09-10 11:58:54 +02:00
teoxoy
2ea314e978
[wgpu-core] remove Arc
around StagingBuffer
2024-09-10 11:58:54 +02:00
teoxoy
b14fe14e88
[wgpu-core] use Fallible
for QuerySet
2024-09-10 11:58:54 +02:00
teoxoy
3ed1abc492
[wgpu-core] use Fallible
for Sampler
2024-09-10 11:58:54 +02:00
teoxoy
04f17d4197
[wgpu-core] use Fallible
for TextureView
2024-09-10 11:58:54 +02:00
teoxoy
c630821f1d
[wgpu-core] use Fallible
for Texture
2024-09-10 11:58:54 +02:00
teoxoy
68e8b7d4a8
[wgpu-core] introduce Fallible
and use it for Buffer
(first step of invalidity internalization)
2024-09-10 11:58:54 +02:00
teoxoy
3437589107
[wgpu-core] use .strict_get()
& .strict_unregister()
for devices
...
This works because we never assign errors to devices (they are never invalid).
2024-09-10 11:58:54 +02:00
teoxoy
07c397a1e5
[wgpu-core] use .strict_get()
& .strict_unregister()
for queues
...
This works because we never assign errors to queues (they are never invalid).
2024-09-10 11:58:54 +02:00
teoxoy
aa280ecd44
[wgpu-core] change return type of device creation methods to be more rusty
...
This is fine from the WebGPU spec's perspective as device creation returns a promise that can reject.
2024-09-10 11:58:54 +02:00
teoxoy
da9afea271
[wgpu-core] use .strict_get()
& .strict_unregister()
for surfaces
...
This works because we never assign errors to surfaces (they are never invalid).
2024-09-10 11:58:54 +02:00
teoxoy
98426329a4
[wgpu-core] introduce Registry
.strict_get()
& .strict_unregister()
and use them for adapters
...
This works because we never assign errors to adapters (they are never invalid).
2024-09-10 11:58:54 +02:00
teoxoy
70a9c01b48
[wgpu-core] make the Registry
generic over T: Clone
2024-09-10 11:58:54 +02:00
teoxoy
d550342f47
[wgpu-core] use device.instance_flags
when possible
2024-09-10 11:58:54 +02:00
teoxoy
480abae331
fix ordering of device.valid.store
in device_destroy
2024-09-09 15:03:19 +02:00
teoxoy
eb47449eb9
invalidate the device when we encounter driver-induced device loss or on unexpected errors
2024-09-09 15:03:19 +02:00
Brad Werth
9b36a3e129
Make bind group an Option for set_bind_group calls. ( #6216 )
...
This is just an API change for all the "set_bind_group" calls. Calls
that pass a Some() argument should have unchanged behavior. The None
cases are left as TODOs.
2024-09-06 14:29:09 -07:00
Erich Gubler
0e352f5b34
Resolve lints for Rust 1.78-1.81 that can be preempted before upgrade ( #6225 )
...
* chore: remove `Context` methods detected as dead code
This is detected by `rustc` as of Rust 1.79.0.
* refactor: satisfy `clippy::manual_inspect`
Detected as of Rust 1.81.0.
* refactor: satisfy `clippy::needless_borrows_for_generic_args`
Detected as of Rust 1.81.0.
* refactor: suppress false-positive `dead_code` lint for `SubmissionIndex`
* chore: eliminate `dead_code` when `target_os = "emscripten"`
2024-09-06 11:55:22 +02:00
Valaphee The Meerkat
07684d3623
Rename Rg11b10UFloat to Rg11b10Ufloat ( #6226 )
2024-09-06 11:46:49 +02:00
Nicolas Silva
81963e24ca
Fix the internal buffer and texture count ( #6223 )
...
Currently, we only increment the internal buffer/texture counters when creating them in the regular way (not when creating them from externally built hal objects (create_texture_from_hal/create_buffer_from_hal). However we decrement the counter in all cases, which makes the counters incorrect when these externally created resources are involved.
This commit fixes it by adding hooks (add_raw_buffer and add_raw_texture) in the hal device abstractions to inform when buffer or textures are created externally.
2024-09-05 18:53:01 +00:00
Erich Gubler
ec21000521
refactor: lock::observing
: extract fn addr
from ref. conv. to usize
2024-09-05 11:08:51 -04:00
Erich Gubler
63a24d37c3
chore: satisfy clippy::ref_as_ptr
2024-09-05 11:08:51 -04:00
Jim Blandy
36124b12c5
[core] Update docs for private items. ( #6219 )
...
Make `cargo doc --document-private-items` work again in wgpu-core.
2024-09-05 10:15:27 +02:00
Teodor Tanasoaia
4e78829d82
[wgpu-core] when mapping buffers for reading, mark buffers as initialized only when they have MAP_WRITE
usage ( #6178 )
2024-09-04 14:57:08 +00:00
Jim Blandy
ee35b0e586
[core, hal, types] Clarify wgpu_hal
's bounds check promises.
...
In `wgpu_hal`:
- Document that `wgpu_hal` guarantees that shaders will not access buffer
contents beyond the bindgroups' bound regions, rounded up to some
adapter-specific alignment. Introduce the term "accessible region" for
the portion of the buffer that shaders can actually get at.
- Document that all bets are off if you disable bounds checks with
`ShaderModuleDescriptor::runtime_checks`.
- Provide this alignment in `wgpu_hal::Alignments`. Update all backends
appropriately.
- In the Vulkan backend, use Naga to inject bounds checks on buffer accesses
unless `robustBufferAccess2` is available; `robustBufferAccess` is not
sufficient. Retrieve `VK_EXT_robustness2`'s properties, as needed to discover
the alignment above.
In `wgpu_core`:
- Use buffer bindings' accessible regions to determine which parts of the buffer
need to be initialized.
In `wgpu_types`:
- Document some of the possible effects of using
`ShaderBoundsChecks::unchecked`.
Fixes #1813 .
2024-09-03 12:33:02 -04:00
Jim Blandy
de7765bd28
[core]: Let Device::create_buffer_binding
get limits
from self
.
...
Rather than passing `self.limits` to `Device::create_buffer_binding`
as an argument, let it simply refer to `self.limits` itself.
2024-09-03 12:33:02 -04:00
Jim Blandy
9ebc50fc1e
[core] Remove unnecessary pub(crate)
from Device
methods.
...
Remove the `pub(crate)` visibility marking from various associated
functions of `Device` that are defined in, and not used outside of,
the `wgpu_core::device::resource` module.
2024-09-03 12:33:02 -04:00
Jim Blandy
9d24406d29
[core] Simplify self
types in device::resource
.
...
Change various functions that have no need to create an owning
reference to the `Device` to accept `&self` instead of `&Arc<Self>`.
Change `ParentDevice::same_device` to accept `&Device` as the point of
comparison, not `&Arc<Device>`. Call sites will use Deref conversion,
so no callers need to be changed.
2024-09-03 12:33:02 -04:00
Jim Blandy
504ff3e1a6
[core] Rename map_buffer
to resolve_buffer
, etc.
...
In `Device::create_bind_group`, name the functions that convert
resource ids to Arcs `resolve_foo`, not `map_foo`:
- The types that hold Arcs are usually called `ResolvedBlah`.
- The name `map_buffer` is misleading.
2024-09-03 12:33:02 -04:00
BlackStone1123
8eb0e6451b
fix wrong count buffer id ( #6194 )
...
Co-authored-by: Jasper Wu <wuq141@vanke.com>
2024-09-02 11:37:37 +00:00
Jim Blandy
bbdbafdf8a
[core] Add lock::observing
module, for analyzing lock acquisition.
...
Add a new module `lock::observing`, enabled by the `observe-locks`
feature, that records all nested lock acquisitions in trace files.
Add a new utility to the workspace, `lock-analyzer`, that reads the
files written by the `observe-locks` feature and writes out a new
`define_lock_ranks!` macro invocation that covers all observed lock
usage, along with comments giving the held and acquired source
locations.
2024-08-28 22:44:20 -04:00
Jim Blandy
3f6f1d766c
[core] Add #[track_caller]
to Registry
lock methods.
2024-08-28 22:44:20 -04:00
Jim Blandy
f56914cea9
[core] Rename LockRankSet::name
to member_name
.
2024-08-28 22:44:20 -04:00
Erich Gubler
fac49ee97c
chore: work around unused_qualifications
from new prelude
items in Rust 1.80
...
`std::mem::{size,align}_of{,_val}` was added to `std::prelude` in Rust
1.80; see
[`rust`#123168](https://github.com/rust-lang/rust/pull/123168/ ).
However, we don't have an MSRV at 1.80 or higher yet. So, let's work
around it by importing these items fully. Since neither `clippy` nor
`rustc` lint against shadowed `prelude` items yet (see also a [proposed
`clippy` lint] for such), that lets us remove the explicit `std::mem::*`
imports later at our leisure.
[proposed `clippy` lint]: https://github.com/rust-lang/rust-clippy/issues/8439
2024-08-23 16:20:34 -04:00
Erich Gubler
754ead25ab
chore: resolve wgt::Backend::Empty
raising unused_qualifications
2024-08-23 16:20:34 -04:00
Marijn Suijten
a157c3cf4b
[wgpu-hal] Migrate d3d12 backend over to windows-rs
( #5956 )
...
* windows-rs 0.58
* Clean up suspicious committed allocation workaround
* dx12: Flatten suballocation module
2024-08-20 11:48:37 -04:00
Kornel
222f1ea733
Reduce code size of error handling
2024-08-19 14:38:20 +01:00
teoxoy
2c31414517
add an Unexpected
variant to DeviceError
2024-08-15 13:56:05 +01:00
Andreas Reich
ab17d29237
re-enable docs for wgpu-core
2024-08-14 17:34:11 +02:00
Andreas Reich
0fb772b5df
remove dyn render & compute pass
2024-08-14 17:34:11 +02:00
Andreas Reich
0287eaf022
Remove gfx_select
.
2024-08-14 17:34:11 +02:00
Andreas Reich
9794f33823
Handle webgl's queue_copy_external_image_to_texture
2024-08-14 17:34:11 +02:00
Andreas Reich
1bfe8845d5
ignore 'arc instead of rc' warnings on wasm
2024-08-14 17:34:11 +02:00
Andreas Reich
24498f04d4
The second unraveling: hub and all types on it are generic free!
...
gfx_select macros are empty husks now that are waiting to be removed
2024-08-14 17:34:11 +02:00
Andreas Reich
3181251577
Core adapter no longer uses any generics
2024-08-14 17:34:11 +02:00
Andreas Reich
04cadfb369
Core's Surface, Instance and Adapter use now dynamic hal types
2024-08-14 17:34:11 +02:00
Andreas Reich
7c7e4164f1
The big unraveling: core device now has a boxed DynDevice
, ripple effects from there leading to boxing of almost all hal resources
2024-08-14 17:34:11 +02:00
Andreas Reich
276753f963
DynDevice create/destroy bind group
...
bindgroup fixup
2024-08-14 17:34:11 +02:00
Andreas Reich
39b408218f
implement transition_textures for DynCommandEncoder
2024-08-14 17:34:11 +02:00
Andreas Reich
a47a0cb3d9
render/compute pass descriptors work now with dyn types
2024-08-14 17:34:11 +02:00
Andreas Reich
bea9a10f90
fold ComputePassTimestampWrites & RenderPassTimestampWrites and make PassTimestampWrites usable with DynQuerySet
2024-08-14 17:34:11 +02:00
Andreas Reich
a4d9d38d03
BufferBarrier no longer depend on hal api struct, but directly on buffer type
2024-08-14 17:34:11 +02:00
Andreas Reich
cda9d9af65
Buffer bindings no longer depend on hal api struct, but directly on buffer type
2024-08-14 17:34:11 +02:00
Samson
c6a3d92734
Rg11b10Float
-> Rg11b10UFloat
and deduplicate entries in TEXTURE_FORMAT_LIST
(#6108 )
...
* Resync `TEXTURE_FORMAT_LIST` to match `TextureFormat`
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* `Rg11b10Float` -> `Rg11b10UFloat`
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Add changelog entry
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-08-13 08:28:55 +00:00
Erich Gubler
b1eb6db8cd
refactor: satisfy clippy::manual_bits
2024-08-13 08:42:41 +01:00
teoxoy
c72bc7b84b
remove unnecessary RwLock
from Texture.clear_mode
2024-08-13 00:55:32 +02:00
teoxoy
1aaaec22f6
use ManuallyDrop
for texture views of TextureClearMode
2024-08-13 00:55:32 +02:00
teoxoy
ce9c9b76f6
remove Option
around A::SurfaceTexture
...
We can rely on the snatching mechanism to take the surface texture.
2024-08-13 00:55:32 +02:00
teoxoy
19843c9c5f
use ManuallyDrop
for Device.fence
2024-08-13 00:55:32 +02:00
teoxoy
728b288fda
use ManuallyDrop
for Device.zero_buffer
2024-08-13 00:55:32 +02:00
teoxoy
c1bc0864c5
use ManuallyDrop
for remaining resources
2024-08-13 00:55:32 +02:00
teoxoy
b0cc0d2ebc
use QuerySet.raw()
instead of QuerySet.raw.as_ref().unwrap()
2024-08-13 00:55:32 +02:00
teoxoy
cf5706c24b
use Device.raw()
instead of Device.raw.as_ref().unwrap()
2024-08-13 00:55:32 +02:00
teoxoy
a6bc2f6f53
fix check for flush_mapped_ranges
in map_buffer
...
`flush_mapped_ranges` needs to be called when mappings are not coherent.
We can also omit flushing for write-mapped buffers since we always flush them on unmap.
2024-08-12 14:20:56 +01:00
teoxoy
f0875e8fda
remove Buffer.sync_mapped_writes
...
`zero_init_needs_flush_now` was always equal to `mapping.is_coherent`
which is not correct but is fixed by the next commit.
2024-08-12 14:20:56 +01:00
teoxoy
5617f0fd17
call flush_mapped_ranges
when unmapping write-mapped buffers
...
I'm not sure how things worked without this.
2024-08-12 14:20:56 +01:00
Teodor Tanasoaia
94f54b3dc8
Add a separate pipeline constants error ( #6094 )
2024-08-12 09:20:36 +02:00
Mehmet Oguz Derin
34b0df277c
Support texture-compression-bc-sliced-3d
in wgpu ( #5751 )
2024-08-10 12:02:29 +02:00
teoxoy
f6a3eef77e
change Device.create_shader_module
to return an Arc<ShaderModule<A>
2024-08-08 18:49:52 +02:00
teoxoy
d8b1c5788a
change Device.create_command_encoder
to return an Arc<CommandBuffer<A>
2024-08-08 18:49:52 +02:00
teoxoy
9ce1772f8e
change Device.create_pipeline_cache
to return an Arc<PipelineCache<A>
2024-08-08 18:49:52 +02:00
teoxoy
47465ddb1c
change Device.create_pipeline_layout
to return an Arc<PipelineLayout<A>
2024-08-08 18:49:52 +02:00
teoxoy
36c998a558
change Device.create_bind_group_layout
to return an Arc<BindGroupLayout<A>
2024-08-08 18:49:52 +02:00
teoxoy
781b54a8b9
remove TrackingData
from resources that are not tracked
2024-08-08 14:42:13 +02:00
teoxoy
09cc4d211b
remove Labeled
supertrait of Trackable
...
This is no longer needed since 9c6ae1beae
removed the usages.
2024-08-08 14:42:13 +02:00
teoxoy
8c7c5c4974
decouple device and queue IDs
...
Devices and queues can have different lifetimes, we shouldn't assume that their IDs match.
2024-08-05 15:46:12 +02:00
Samson
de960ccbba
Handle TooManyAttachments in wgpu-core ( #6076 )
2024-08-05 15:45:02 +02:00
teoxoy
7b4cbc2619
add comments in BindGroupStates.optimize
2024-08-03 11:58:14 +02:00
teoxoy
4e777bd0e7
merge the texture and texture view trackers of BindGroupStates
2024-08-03 11:58:14 +02:00
teoxoy
62af9d78b5
rename {Buffer,Texture}BindGroupState
's add_single
to insert_single
...
Also change it's definition to take an owned `Arc`. This makes these functions consistent with the other trackers.
2024-08-03 11:58:14 +02:00
teoxoy
826e3716e5
remove all internal RenderBundleScope
RwLock
s
2024-08-03 11:58:14 +02:00
teoxoy
5cb1be63aa
refactor the StatelessTracker
to hold a Vec
of Arc
s
...
Also removes the `StatelessBindGroupState` since it does the same thing.
2024-08-03 11:58:14 +02:00
teoxoy
a3142ade91
don't optimize BindGroupStates.{views,samplers}
...
The resources inside `StatelessBindGroupState` are never merged with any other tracker.
2024-08-03 11:58:14 +02:00
teoxoy
3a5ad193db
remove all internal BindGroupState
Mutex
es
2024-08-03 11:58:14 +02:00
teoxoy
14170fd963
remove unused RenderBundleScope.query_sets
2024-08-03 11:58:14 +02:00
teoxoy
f19217479d
remove Tracker.add_from_render_bundle
...
The render bundle resources are already kept alive by the render bundle itself, there is no need to add them.
2024-08-03 11:58:14 +02:00
Nicolas Silva
9c6ae1beae
Log spring cleaning ( #6065 )
...
Remove unused logs in wgpu-core and wgpu-hal
2024-07-31 16:24:23 +00:00
AthosOfAthos
bfad205cf5
Reduced verbosity for 'Device::maintain: waiting for submission index… ( #6044 )
2024-07-30 10:58:38 +02:00
teoxoy
6351a75b0c
remove implemented TODO
2024-07-29 17:31:24 +02:00
teoxoy
76f9b2f87a
use ManuallyDrop
for Destroyed{Buffer,Texture}
2024-07-29 17:31:24 +02:00
teoxoy
650054bbcd
[player] simplify sync buffer writing
2024-07-29 17:31:24 +02:00
teoxoy
7502e65213
remove unused Global.device_get_buffer_sub_data
2024-07-29 17:31:24 +02:00
teoxoy
2ea081fabf
remove waiting functionality from Global.{buffer,texture,texture_view}_drop()
...
Those resources won't be destroyed if used by a submission anyway.
2024-07-29 17:31:24 +02:00
teoxoy
d1da4456a6
remove Global.clear_backend()
...
The method was only used by the player's tests which
was refactored to create a new `Global` instead.
Removing it cleans up the internals of `Hub.clear()`,
we should avoid having test only items.
2024-07-29 17:31:24 +02:00
teoxoy
f3e8e594ed
remove Hub.surface_unconfigure()
since the Hub
reference was unused.
2024-07-29 17:31:24 +02:00
teoxoy
1cb7ebab99
[wgpu-hal] replace Instance.destroy_surface()
with Drop
impls on Surface
s
...
Only the metal and vulkan backends require
destruction code and it can go in a `Drop` impl since
the `Instance` is unused in those implementations.
2024-07-29 17:31:24 +02:00
Samson
7462754bde
Remove 'de: 'static"
serde bound and replace &'static str
with Cow
in some errors ( #6048 )
...
* Remove `serde(bound(deserialize = "'de: 'static"))` and replace `&'static str` with `Cow` in deser errors
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Allow `clippy::result_large_err`
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-07-29 09:07:26 +02:00
Bruce Mitchener
3166d37754
Use workspace dependencies more. ( #6020 )
2024-07-26 18:48:01 +02:00
Andreas Reich
d3c38a4fd0
Fix AnyDevice drop implementation dropping the wrong thing ( #6052 )
2024-07-26 10:31:36 +02:00
teoxoy
03f6d24ea6
deduplicate derived BGLs
2024-07-25 18:15:29 +02:00