9289 Commits

Author SHA1 Message Date
Jasper St. Pierre
38b6663f3c
validation: Fix type compatibility for streams vs. vertex inputs (#7600)
The old is_compatible_with handled scalar/scalar, scalar/vector, vector/vector, but was missing vector/scalar.

Since is_compatible_with is only used by vertex shader inputs, and vertex shader inputs can't be matrices (only scalars and vectors), we can actually simplify this by removing the other match and just only checking the kind.

Fixes #7568
2025-04-25 15:08:27 +02:00
teoxoy
6a7aa14fbd add changelog entry 2025-04-25 12:39:45 +02:00
teoxoy
cc406f919e [vk] use destructuring for cache keys
If fields are unused, they shouldn't be part of the cache key.
2025-04-25 12:39:45 +02:00
teoxoy
d14849df48 [vk] add support for rendering to slices of 3D textures 2025-04-25 12:39:45 +02:00
teoxoy
f728a92366 [vk] add TextureView::raw_format 2025-04-25 12:39:45 +02:00
teoxoy
2d73eb3967 [vk] move framebuffer cache into CommandEncoder
This makes texture view destruction cheap since users of wgpu-hal are required to keep resources referenced by encoders alive for at least as long as the encoder is alive.

This is also a prerequisite to implement rendering to slices of 3D textures (by creating temporary texture views).

On the other hand the cache won't be as effective but that is probably ok, we can reevaluate the implementation if it turns out to be a problem.
2025-04-25 12:39:45 +02:00
teoxoy
da8ff2a0d5 [vk] fix raw_pass not being part of FramebufferKey 2025-04-25 12:39:45 +02:00
teoxoy
d4b46d6099 [vk] remove usage of imageless framebuffers
Imageless framebuffers are not needed, we know which views will be attached to the render pass already. Even if we wanted to more aggressively cache imageless framebuffers that wouldn't be possible since they still require specifiying view usage, texture usage and view formats.

Removing usage of imageless framebuffers simplifies the code substantially.
2025-04-25 12:39:45 +02:00
teoxoy
2bb8325f85 [vk] require VK_KHR_maintenance1 (in preparation for creating 2D texture views from slices of 3D textures) 2025-04-25 12:39:45 +02:00
teoxoy
d714e3d95a [d3d12,metal,gl] add support for rendering to slices of 3D textures 2025-04-25 12:39:45 +02:00
teoxoy
15477b84a9 [wgpu-hal] make begin_render_pass fallible 2025-04-25 12:39:45 +02:00
teoxoy
5ecc48d494 add RenderPassColorAttachment::depth_slice 2025-04-25 12:39:45 +02:00
teoxoy
6058dd4296 [wgpu-core] allow 2D-Array texture views with a single layer to be used as render attachments 2025-04-25 12:39:45 +02:00
Connor Fitzgerald
a439fe4bfa
Use lockfileMaintence for non-breaking changes (#7629) 2025-04-25 11:28:26 +02:00
Erich Gubler
96c1fb11de
docs(CHANGELOG): s/Bux Fixes/Bug Fixes (#7628) 2025-04-24 21:19:01 +00:00
Jim Blandy
02bf7f40cd
Add some missing CHANGELOG.md entries. (#7627) 2025-04-24 17:00:07 -04:00
Jim Blandy
5bc3c9da3c [naga] Constrain textureLoad array index args to i32 or u32.
In `naga::valid::expression`, require that
`Expression::ImageLoad::array_index` be either `i32` or `u32`, not
just an integral type of any size.
2025-04-24 13:45:12 -07:00
Jim Blandy
7c5f705580 [naga] Allow textureLoad's sample index arg to be unsigned.
Permit the `sample_index` argument of `textureLoad` overloads to be
either `i32` or `u32`.
2025-04-24 13:45:12 -07:00
Teodor Tanasoaia
195217b269
allow read-write and read-only storage textures without TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES (#7623) 2025-04-24 11:45:24 -04:00
Florian Denis
1806414771
[wgpu-types]: Expose wgpu::Limits::defaults() (#7622) 2025-04-24 09:56:14 -04:00
Connor Fitzgerald
ffbef20168
Schedule renovate (#7620) 2025-04-23 22:27:19 +00:00
renovate[bot]
1d6c1d020c
Update Rust crate which to v7 (#7619)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 22:00:17 +00:00
renovate[bot]
d1a1a59e50
Update Rust crate ordered-float to v5 (#7618)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:43:28 +00:00
renovate[bot]
c40738c521
Update codecov/codecov-action action to v5 (#7613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 17:42:56 -04:00
renovate[bot]
3727b67253
Update Rust crate env_logger to 0.11.0 (#7609)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:38:52 +00:00
renovate[bot]
018fd31fb1
Update Rust crate metal to 0.32.0 (#7611)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:08:18 +00:00
renovate[bot]
20d5da7e07
Update Minor Updates (#7607)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 20:59:26 +00:00
renovate[bot]
7ccf1e5ac2
Configure Renovate (#7606)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2025-04-23 20:34:44 +00:00
Connor Fitzgerald
ec102222f9
Disable dependabot (#7603) 2025-04-23 18:47:26 +02:00
Zachary Harrold
35f131ff10
Remove default features from petgraph (#7591) 2025-04-23 03:30:36 +00:00
Zachary Harrold
66263789bc
[wgpu-core]: Remove x_instead_of_y exceptions (#7598) 2025-04-23 03:17:29 +00:00
dependabot[bot]
33a0d2bbfa
Bump the patch-updates group across 1 directory with 8 updates (#7594)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 18:56:27 -04:00
Connor Fitzgerald
a9e93f9acb Update missed dependencies 2025-04-22 12:04:36 -04:00
Connor Fitzgerald
e0aeff0e4d Update lockfile 2025-04-22 12:04:36 -04:00
Connor Fitzgerald
ea9c771f78 Update cargo-deny config 2025-04-22 12:04:36 -04:00
Zachary Harrold
c63cfd86ae
Remove exceptions for x_instead_of_y lints (#7592) 2025-04-22 11:12:53 -04:00
Zachary Harrold
c809aefb8d
Allow serialize and deserialize in Naga no_std (#7590) 2025-04-22 11:07:35 -04:00
teoxoy
1fdd05a2b8 [d3d12] refactor: move allocation related fields into a new Allocator struct 2025-04-22 09:21:27 +02:00
teoxoy
3b72d59a3c make memory pressure detection optional and configurable 2025-04-22 09:21:27 +02:00
teoxoy
5bd3a25cf7 [d3d12] use the actual memblock_sizes for OOM detection 2025-04-22 09:21:27 +02:00
teoxoy
0a416189b6 [test] add OOM tests 2025-04-22 09:21:27 +02:00
teoxoy
e78bc98d1b remove oom_panic feature 2025-04-22 09:21:27 +02:00
teoxoy
71cce67665 [vk] destroy resources in error paths 2025-04-22 09:21:27 +02:00
teoxoy
2e7ca8c995 [vk] add OOM checks before creating buffers, textures, query sets and acceleration structures 2025-04-22 09:21:27 +02:00
teoxoy
7b482622d3 allow sampler creation to return OOMs
This is to preserve the current behavior as tested by the `SAMPLER_CREATION_FAILURE` test.

This is not spec compliant but it's unclear what we should do instead. I opened https://github.com/gpuweb/gpuweb/issues/5142 to figure out what we should do.
2025-04-22 09:21:27 +02:00
teoxoy
c13fc3d141 don't call release_gpu_resources when losing the device
This removes the possibility of deadlocks happening since `release_gpu_resources` tries to lock resources (trackers, snatchable_lock, pending_writes, life_tracker) while they might be already locked; `handle_hal_error` is called in lots of places.

Removing the call only delays destruction since `release_gpu_resources` is still called in `maintain`.
2025-04-22 09:21:27 +02:00
teoxoy
ece29b6e68 [D3D12/VK] add OOM check on submit and poll that will lose the device if we are over 95% of our budget 2025-04-22 09:21:27 +02:00
teoxoy
c144f2a697 invalidate Device on OOM errors with the exception of buffer, texture, query set and acceleration structure creation 2025-04-22 09:21:27 +02:00
teoxoy
c49620d1a2 add device validity checks to Queue methods 2025-04-22 09:21:27 +02:00
teoxoy
1c071b14af [D3D12] add OOM checks before creating buffers, textures, query sets and acceleration structures
The D3D12 API doesn't guarantee that it returns `E_OUTOFMEMORY` in high memory pressure situations; drivers/kernel will happily start swapping objects that were in VRAM to RAM and then RAM to DISK, slowing down the system to a crawl if done in a loop.
2025-04-22 09:21:27 +02:00