506: Bug 1614702 - WebGPU textures, texture views, and samplers r=gecko a=kvark
This is a commit cherry-picked from #504
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
505: Expose `Global::enumerate_adapters`. r=kvark a=daxpedda
Expose `enumerate_adapters` to use it in `wgpu-rs`.
Issue was that directly accessing `wgpu-core` wasn't possible because an instantiation of `Global` was needed.
Co-authored-by: daxpedda <daxpedda@gmail.com>
501: Update WebGPU to mozilla-central from hg rev 0f1a8e4c6a76b3b0b16902c7fdfe2356c60ca351 r=kvark a=staktrace
This merge commit should get tagged as `mozilla-0f1a8e4c6a76b3b0b16902c7fdfe2356c60ca351`.
Co-authored-by: Kartikaya Gupta <kgupta@mozilla.com>
497: Catch swapchain output being dropped too early r=kvark a=kvark
Prevents a common case where the swapchain frame is dropped before the submission. This is not comprehensive yet, but it should be helpful.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
480: Implement `enumerate_adapters`. r=kvark a=daxpedda
This is take two of #478, it's a much smaller change with less abstraction.
- implement `internal_enumerate_adapters`, which refactors `instance.{BACKEND}.enumerate_adapters()` out of `pick_adapter`
- implement `enumerate_adapters`, which just returns a vector of all GPUs in the form of `AdapterId`
Co-authored-by: daxpedda <daxpedda@gmail.com>
489: All the missing Gecko fixes r=grovesNL a=kvark
Last auto-integration in #474 got borked, partially because of the original change being reverted in mozilla-central. This is the manual sync-up from m-c. Hopefully it doesn't break anything new we got here.
Fixes#457Fixes#463
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
475: Return custom `AdapterInfo` that contains backend. r=kvark a=daxpedda
When requesting an `Adapter` in combination with `BackendBit::all()`, there was no way to determine what backend was ultimately chosen.
This change implements a custom `AdapterInfo` that contains a field with `Backend`, it does otherwise not differ from `gfx_hal::adapter::AdapterInfo`.
The only question I have is about `serde` implementation, currently I can't derive de/serialization from it because of `DeviceType`. This could be fixed by activating the `serde` feature in `gfx-hal`, which isn't possible (as far as i know) without renaming our current `serde` feature.
Co-authored-by: daxpedda <daxpedda@gmail.com>
468: Switch value of BufferUsage's INDIRECT and STORAGE_READ fields r=kvark a=almarklein
Closes#467. This makes the value of `INDIRECT` equal to it's value in the IDL spec. (`STORAGE_READ` is not present in the IDL spec.)
I changed the value in `resource.rs` and then ran `make ffi/wgpu.h`.
Co-authored-by: Almar Klein <almar.klein@gmail.com>
466: Refactored swapchain tracking r=sibling a=kvark
This is a sibling of #465 for master.
Fixes#227
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
462: Using default nsview if not provided by raw-window-handle r=kvark a=lmcgrath
Per #453 I've added some native code to get the default `NSView` if it's not provided by `RawWindowHandle`. This is to support libraries like SDL2 which expose an `NSWindow` but no `NSView`. I'm using the [`[NSWindow contentView]`](https://developer.apple.com/documentation/appkit/nswindow/1419160-contentview) property to get the `NSView`.
Co-authored-by: Logan McGrath <1755866+lmcgrath@users.noreply.github.com>
461: Add Clippy to CI, fix errors and most warnings r=kvark a=yanchith
A quick rundown of changes:
- Fixed instances of clippy error [not_unsafe_ptr_arg_deref](https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref): Some extern functions in wgpu-remote are now marked unsafe, as they accessed data behind raw pointer via `Box::from_raw` and `slice::from_raw_parts` (commit 741844cc2b)
- Fixed clippy warning [or_fun_call](https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call) by changing `unwrap_or` to `unwrap_or_else`
- Added `#[allow(clippy::range_plus_one)]` in places where ranges are constructed along with TODOs to fix upstream in gfx. The rule [range_plus_one](https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one) is great if you have everything in one crate, but the gfx hal structs expect `Range` instead of the more generic `RangeBounds` trait.
- Fixed quite a few clippy warnings [missing_safety_doc](https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc) in the trivial cases (`Box::from_raw` and `slice::from_raw_parts`).
There's still a few `missing_safety_doc` warnings left. They all have in common the usage of the unsafe functions `RawPass::encode` and `RawPass::encode_slice`. I think these could potentially be made safe - it seems like `RawPass` manages its invariants internally, but I might be missing something.
I didn't add CI code that posts the warnings to github PR comments, but if anyone is willing to pick that up, this could help: https://github.com/dpobel/damien.pobel.fr/pull/62/filesFixes: #422
Co-authored-by: yanchith <yanchi.toth@gmail.com>
Only two unsafe functions were used internally:
- `slice::from_raw_parts`
- `Box::from_raw`
The safety messages are adapted from the safety messages of these functions.
448: Fix framebuffers not always being cleaned up if invalid r=kvark a=LaylConway
This changes framebuffers to be cleaned up if only one view is cleaned up, instead of if all views are cleaned up. This is necessary because currently, at least for me, swapchain images will have a different view every frame. This means that if other views continue to exist between frames, the resulting framebuffers will never be cleaned up.
Fixes#447
Co-authored-by: Layl <2385329-layl@users.noreply.gitlab.com>