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>
124: Configure Swapchain with supported composite_alpha r=kvark a=silphendio
CompositeAlpha::Inherit (default) is not supported on every graphics card.
Relevant : https://github.com/gfx-rs/gfx/issues/2507
Co-authored-by: Markus Ginthör <markus.ginthoer@gmx.at>
121: Implement index formats r=kvark a=grovesNL
I decided to implement index formats to try to catch up on some of the recent changes. The idea is to either source the index format from the last bound pipeline, or switch the index format based on a newly bound pipeline, through the following:
- During `set_index_buffer`, use the index format from the render pass, and cache the bound index buffer ID and offset
- During `set_pipeline`, check if the index format has changed from the previous pipeline, and rebind the index buffer using the new index format if necessary
Some things I wasn't sure about:
- Is the usage of `get_with_extended_usage` correct here?
- Are the caches located in the correct place (i.e. `RenderPassContext`)?
Co-authored-by: Joshua Groves <josh@joshgroves.com>