164: Fix locking order in texture view creation and destruction r=kvark a=kvark
Fixes#161
Essentially, this is another case that would solved by #66. At least we can use the library in the mean time before it's implemented.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
159: Add GPU timeout, fix active submission processing order r=kvark a=kvark
Fixes#156
The timeouts are going to be configurable later down the road.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
154: Move callbacks out of the locking path r=kvark a=kvark
Fixes#152
This change fixes the deadlocks discovered by @rukai . It enforces the following invariants through the code:
1. if we enter Rust code from FFI, we assume nothing is locked. The invariant was previously not true when we unmapped a buffer in a mapping callback.
2. the HUB storages are always locked in the same order. This was not followed in a few places, but still needs to be enforced by #66 later down the road.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
157: Add multithreaded_compute test r=kvark a=rukai
As requested in https://github.com/gfx-rs/wgpu/issues/152 I have opened a PR to add the repro as a test case.
I used [rusty fork](https://github.com/AltSysrq/rusty-fork) to allow setting a timeout.
Rusty fork also runs each test in a separate process.
Open to any suggestions on how to organize tests etc.
I could add https://github.com/gfx-rs/wgpu/issues/156 if you want?
Maybe name the tests by issue number?
If we add a test for every issue, breaking changes would become really annoying :/
Co-authored-by: Rukai <rubickent@gmail.com>
153: Update deps + upgrade examples to rust 2018 r=kvark a=rukai
Things to note:
* I removed the Cargo.lock - I assume it was only accidentally checked in?
* I dont know what `wgpu-remote` is for, so I haven't tested it beyond compiling it.
Co-authored-by: Rukai <rubickent@gmail.com>
151: Assert on swapchain output usage before presenting r=grovesNL a=kvark
Fixes#148
There is no "fix" for the case on our side. The PR brings stronger requirements on the swapchain outputs: they have to be used and submitted before dropped.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
140: Creating buffers with size 0 actually creates them with size 1 r=kvark a=rukai
closes https://github.com/gfx-rs/wgpu/issues/135
One concern I have is if the buffer is uninitialized before the call to `self.data.copy_from_slice(slice);`
If that is the case, my new `fill_from_slice` implementation will leave memory uninitialized when the user tries to create an empty buffer.
Co-authored-by: Rukai <rubickent@gmail.com>
144: Rewrite bindings generation r=grovesNL a=kvark
This PR is shaping wgpu-remote to become distantly usable, introduces an example that tests it on CI.
It also rewrites our binding generation to use `cbindgen.toml` configuration, which goes in line with Gecko use case (even though they are going to have a separate configuration).
The `ClientFactory` is introduced so that we can have multiple clients (say, one page per client) talking to the same server on a dedicated thread within the GPU process.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
131: Support dynamic offsets r=kvark a=cloudhead
Closes#125
Adds support for dynamic offsets when setting a bind group.
I haven't actually tried if this works with my use-case, but it's fairly straight forward. 😅
Co-authored-by: Alexis Sellier <alexis@monadic.xyz>
127: Track async mapping properly r=grovesNL,swiftcoder a=kvark
Fixes#117, fixes#95, fixes#132
The change can be logically split into 3 parts:
1. when `ActiveSubmission` is retired, we now move the mapped buffers into the "ready to map" vector. This was the missing bit that caused mapping to not work previously.
2. mapping callbacks in Rust wrapper are refactored and they `unmap()` automatically now on users behalf
3. we wait for idle before destroying the device, which allows us to process all the pending callbacks. This fix gets rid of the dummy submission our compute example used to do.
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
128: Fix winit event loop in the triangle example r=kvark a=psincf
It's the refactored https://github.com/gfx-rs/wgpu/pull/122 PR
Co-authored-by: psincf <44228825+psincf@users.noreply.github.com>