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>
169: Disable window bitmap redirection r=kvark a=kvark
That sets `WS_EX_NOREDIRECTIONBITMAP`. According to @raphlinus, makes our resize better :)
There are still strange pauses I see on resizing with DX12 (with and without the change), to be followed-up.
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.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>
166: Reduce Rust requirements for Pin usage r=auto a=kvark
That lowers Rust requirement from 1.39 to 1.33
Important, since Ubuntu packages are still on 1.37
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.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>