Commit Graph

1679 Commits

Author SHA1 Message Date
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
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
Erich Gubler
65b6e15f0f chore: satisfy clippy::unused_qualifications 2024-07-24 12:09:15 -04:00
Erich Gubler
723995d9a9 refactor: warn on and satisfy clippy::{ptr_as_ptr,ref_as_ptr} in wgpu-{core,hal,types}
…using `cargo +1.79.0 clippy --workspace --all-features --all-targets
--fix`, plus some manual changes to (1) catch some missed cases (not run
on all platforms?) and (2) `--fix` doesn't make things compile again. 😀
2024-07-24 12:09:15 -04:00
Samson
2897fb58db Error instead of panic in check bind (#6012)
Removed zipping of binding entries introduced in 4a19ac279c (to make sure binding numbers actually match) and add unknown error for fallback.
2024-07-24 17:50:18 +02:00
Bruce Mitchener
4f02057359 Convert some module doc comments
Some module doc comments were using `/*! ... */` syntax and had
leading ` *` prefixes on each line. This interferes with the
tracking of `clippy::doc_lazy_continuation`, so switch those over
to `//!` style comment blocks.

This leaves `/*! ... */` blocks alone which didn't prefix each
line.
2024-07-24 11:17:00 -04:00
Erich Gubler
7b2e08fb94 refactor: satisfy clippy::missing_transmute_annotations (#6024)
* refactor(metal): satisfy `clippy::missing_transmute_annotations`

* refactor(gles): satisfy `clippy::missing_transmute_annotations`

* refactor(metal): `metal::Surface::view`: use `ptr::cast` instead of `as`
2024-07-24 08:56:45 +02:00
Jim Blandy
ebb011fc6b [core] Use ManuallyDrop for wgpu_core::device::Queue::raw.
Change the field `wgpu_core::device::Queue::raw` from an
`Option<A::Queue>` to a `std::mem::ManuallyDrop<A::Queue>`. Replace
various `.as_ref().unwrap()` chains with calls to a new accessor
function `Queue::raw`.

An `Option` is misleading, as this field is always populated during
the lifetime of a `Queue`. Instead, we simply have a field whose value
needs to be moved in `<Queue as Drop>::drop`; `ManuallyDrop` is the
Rust idiom for this situation.
2024-07-23 14:02:16 -07:00
teoxoy
205f1e3ab6 [wgpu-core] fix length of copy in queue_write_texture #2
Follow-up to 6f16ea460a & 7e112ca4c0.
2024-07-22 12:25:07 +02:00
Vladas Zakrevskis
5a0e2187f0 Print requested and supported usages on UnsupportedUsage error (#6007)
* Print requested and supported usages on UnsupportedUsage error

* fmt

* changelog
2024-07-21 21:12:28 -04:00
sagudev
fc87033b30 Make BufferAccessError (de)serializable
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-07-19 13:37:57 -04:00
sagudev
d03b7e239d Make RequestAdapterError (de)serializable
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-07-19 13:37:57 -04:00
sagudev
7a73c75e6a Make RequestDeviceError (de)serializable
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-07-19 13:37:57 -04:00
Kevin Reid
b5934e89f7 Disable wgpu-core documentation as a workaround for #4905.
This enables `cargo doc` to succeed in a reasonable amount of time,
as long as the reader isn't looking for documentation for `wgpu-core`
itself.
2024-07-19 11:37:00 -04:00
Brad Werth
6cd387412f Remove vertex_pulling_transfrom from PipelineCompilationOptions.
This option was only evaluated for Metal backends, and now it's required
there so the option is going away. It is still configurable for tests
via the PipelineOptions struct, deserialized from .ron files.

This also fixes some type problems with the unpack functions in
writer.rs. Metal << operator extends operand to int-sized, which then
has to be cast back down to the real size before as_type bit conversion.
The math for the snorm values is corrected, in some cases using the
metal unpack_snorm2x16_to_float function because we can't directly
cast a bit-shifted ushort value to half.
2024-07-19 17:13:45 +02:00
Nicolas Silva
bc7622f641 Expose GPU allocation reports in wgpu, wgpu-core and wgpu-hal 2024-07-19 10:16:29 +02:00
Bruce Mitchener
20973d1cdc Fix profiling with tracy. (#5988)
The profiling APIs require a `&str`, but since the label here
is now an `Option<String>`, we must get a `&str` from it.
2024-07-19 00:56:16 -04:00
Connor Fitzgerald
3c3b532cf3 Remove latest_submission_index (#5976)
* Remove latest_submission_index

* CI

* Comments
2024-07-18 16:43:39 +00:00
teoxoy
9a0adefe88 use ManuallyDrop instead of Option for PendingWrites 2024-07-18 10:30:11 -04:00
teoxoy
77e45d46df add missing device valid check in create_texture_view 2024-07-18 10:29:08 -04:00
teoxoy
f767220399 remove same device check from create_texture_binding
`view.parent` will have the same `device` as the `view` itself
2024-07-18 10:29:08 -04:00
teoxoy
63303d4b4e add missing same device checks 2024-07-18 10:29:08 -04:00
teoxoy
2f7860b6e4 move same device check in compute_pass_end_impl 2024-07-18 10:29:08 -04:00
teoxoy
7761b5723d move same device checks in render_pass_end 2024-07-18 10:29:08 -04:00
Jim Blandy
aeb2067e81 [core] Make poll(Wait) not hang after bad command submission.
Add `wgpu_core::device::Device::last_successful_submission_index`,
which records the fence value that `Maintain::Wait` should actually
wait for. See comments for details.

Fixes #5969.
2024-07-17 16:11:04 -07:00
Jim Blandy
2bc328c46f [hal, core] Introduce wgpu_hal::AtomicFenceValue, and use it.
Introduce the new type alias `wgpu_hal::AtomicFenceValue`, which is
the atomic version of `wgpu_hal::FenceValue`. Use this type alias in
`wgpu_core`. Remove `as` conversions made unnecessary since we're not
conflating `usize` with `u64` any more.
2024-07-17 16:11:04 -07:00
teoxoy
91924fb603 [wgpu-core] make implicit_pipeline_ids arg optional for users that don't provide IDs 2024-07-17 16:57:01 +02:00
Teodor Tanasoaia
7e112ca4c0 [wgpu-core] fix length of copy in queue_write_texture (#5973)
The size of the given `data` might be less than the size of the staging buffer.
This issue became apparent with the refactor in 6f16ea460a (https://github.com/gfx-rs/wgpu/pull/5946) since there is now an assert in `StagingBuffer.write()`.

Ruffle ran into this in https://github.com/gfx-rs/wgpu/issues/3193#issuecomment-2231209711.
2024-07-17 10:33:48 -04:00
Jim Blandy
d02e2949b2 [core] Correctly check mipmap-filtering samplers against the layout.
Ensure that samplers using non-`Nearest` mipmap filtering are
considered "filtering samplers" when deciding bind group layout
compatibility.

Add tests for layout `NonFiltering` validation.

Fixes #5948.
2024-07-15 10:03:49 +02:00
Jim Blandy
05c0656fa4 [core] Correct docs for LifetimeTracker and its mapped field. 2024-07-15 09:59:04 +02:00
Andreas Reich
d3edbc57a9 Compute pass benchmark (#5767)
Adds a benchmark for compute pass recording, very similar to what we have for render passes.
2024-07-14 22:13:50 +02:00
teoxoy
6f16ea460a make the StagingBuffer implementation more robust 2024-07-12 16:33:57 +02:00
teoxoy
347d902bcb introduce FlushedStagingBuffer 2024-07-12 16:33:57 +02:00
teoxoy
2f282cdd06 remove instance_flags arg from StagingBuffer::new 2024-07-12 16:33:57 +02:00
teoxoy
26f65ddffd [wgpu-hal] remove return type from Device.unmap_buffer()
It's already documented that to unmap a buffer it has to have been mapped.
Vulkan was the only backend that was returning an OOM on missing `Buffer.block` but `Buffer.map_buffer` already returns an error in this case.
2024-07-12 16:33:57 +02:00
teoxoy
5e2df1406d use StagingBuffer.flush() in Buffer.unmap_inner()
We should have always unmapped the staging buffer as we are using it on the GPU after this point.
2024-07-12 16:33:57 +02:00
teoxoy
9a7f44bf09 make StagingBuffer creation a method 2024-07-12 16:33:57 +02:00
teoxoy
a8b0f2f6a6 remove device arg from StagingBuffer.flush() 2024-07-12 16:33:57 +02:00
teoxoy
4d285d8b61 remove the Mutex around StagingBuffer's internal buffer 2024-07-12 16:33:57 +02:00
teoxoy
a0c185a28c [wgpu-core] fix trying to create 0 sized staging buffers when creating mapped_at_creation buffers
This issue was introduced by fabbca294a.
2024-07-11 14:10:22 +02:00
Bruce Mitchener
ee16de1c63 clippy: Fix doc_lazy_continuation lints (#5935)
These are in nightly builds.
2024-07-11 08:44:43 +02:00
teoxoy
ef0ce05d3a [wgpu-core] fix .zip() usages 2024-07-10 16:42:35 +02:00
teoxoy
b68966eea5 [wgpu-core] use the view's format not the texture's format
This fixes a regression introduced in 0a76c0fa84.
2024-07-10 15:23:31 +02:00
teoxoy
425526828f introduce DeviceTextureTracker which holds weak references to textures 2024-07-09 10:48:52 +02:00
teoxoy
aa9cb71a54 introduce DeviceBufferTracker which holds weak references to buffers 2024-07-09 10:48:52 +02:00
teoxoy
f5a4489fd9 don't call drain_transitions() of we drop the results 2024-07-09 10:48:52 +02:00
teoxoy
ac88c738c0 remove unused BufferTracker.get() 2024-07-09 10:48:52 +02:00
teoxoy
152a7e7dd0 remove unnecessary PhantomData 2024-07-09 10:48:52 +02:00
teoxoy
a270577dc4 make resource metadata generic over a T: Clone 2024-07-09 10:48:52 +02:00