Commit Graph

1933 Commits

Author SHA1 Message Date
Dzmitry Malyshau
9acefac5b3 Heavy refactor of resource lifetime tracking 2020-01-08 18:06:28 -05:00
Layl
a221ca1c12 Fix cmd buffer cleanup not always using lowest active index 2020-01-08 01:17:58 +01:00
Dzmitry Malyshau
7be921495d Fix clippy warnings and errors 2020-01-04 13:20:28 -05:00
Layl
ac8f75288f Use current active list instead of storing last done 2020-01-02 01:33:45 +01:00
Layl
b55cd162bf Defer command buffer recycling until allocate 2020-01-02 01:33:45 +01:00
bors[bot]
2a2ab3dc2a
Merge #418
418: Hotfix deadlocks on resource cleanup r=kvark a=LaylConway

This resolves resource cleanup causing deadlocks with `maintain`, because of `Device::pending` being locked in reverse order.

I'm calling this a "hotfix" because I don't think this is a scaleable approach to resolve how the issue happened in the first place, but it alleviates current deadlocking isssues.

I'm not quite sure how `Token` works, so I don't know if I used that right here.

This fixes #417

Co-authored-by: Layl <2385329-layl@users.noreply.gitlab.com>
2019-12-31 06:07:35 +00:00
bors[bot]
8f42ba6676
Merge #412
412: Another big tracking refactor r=later a=kvark

Fixes #409
Note: there is way more code that had to be thrown out in the process of this PR than there is in the PR itself.
Also fixes [this comment](04e17b3f4f/wgpu-core/src/track/texture.rs (L29)):
> //TODO: make this less awkward!

## Logic
Instead of having a run-time per-operation control over what state is being used for stitching (with `Stitch` enum), we are now deriving this automatically on a per-subresource level. Whenever we are detecting a transition for a sub-resource, and we know there wasn't any "first" state associated with it in the current tracker, we are saving this "first" state. Unlike previous code, where it was confusing what of `Unit` fields (`init`, `last`) are valid, now `first` is `Option<>`, so we know we should be using it if it's there.

This allows us to have this hybrid tracking state of a render pass, where all resources are immutable (and their usage is extended), except for the output attachments. This, together with a whole lot of refactoring, gets us #409.

I'm actually quite happy with the tracking code now. It's finally taking shape we aren't afraid to tell others about :)

Note: this was tested on wgpu-rs examples and vange-rs.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-12-30 23:11:52 +00:00
bors[bot]
890bbcfbed
Merge #416 #420 #424
416: Makefile package command and travis github releases r=kvark a=Korijn

Closes #414

Approach mostly mimicked from [gfx-portability](https://github.com/gfx-rs/portability) as recommended to me by @kvark. I needed a number of commits to iron out some kinks for the Windows builds, so I would recommend using squash merge when accepting this PR.

Note that the Windows rust=nightly build fails, but it's also broken on master, so it's unrelated to the changes in this PR.

/cc @almarklein

# Questions

- [x] Would it make sense to also regenerate the `ffi/wgpu.h` and `wgpu-remote.h` header files and include them in the zip archive?

# Todo for maintainers

- [x] Configure encrypted `api_key`
As in [gfx-portability](https://github.com/gfx-rs/portability/blob/master/.travis.yml#L61) you will need to create an API key and commit it to the `.travis.yml` file. I've checked "allow edits from maintainers" so you should be able to commit to this branch directly. You may want to reference the [Travis instructions](https://docs.travis-ci.com/user/deployment/releases/#authenticating-with-an-oauth-token) as well.

- [ ] Tag revisions
Previous versions (`v0.1` - `v0.4`) have not been tagged on the master branch, you will want to do so retroactively. Also, when releasing in the future, make sure to tag the commit before pushing. Alternatively, you can schedule a travis build manually after applying the tag retroactively.

420: Make Origin3d::{x,y,z} all have type u32 r=kvark a=fintelia

Fixes #419 

424: swapchain creation: check if selected present mode is supported r=kvark a=Veykril

Implements a simple check as talked about in #350 to fallback to `FIFO` should the selected present mode not be available on the system.

Co-authored-by: Korijn van Golen <k.vangolen@clinicalgraphics.com>
Co-authored-by: Korijn van Golen <korijn@gmail.com>
Co-authored-by: Jonathan Behrens <fintelia@gmail.com>
Co-authored-by: Veykril <lukastw97@gmail.com>
2019-12-30 19:26:21 +00:00
Veykril
9eab6fc19e swapchain check present mode, default to vsync if selection is unsupported 2019-12-28 13:34:07 +01:00
Layl
9065e4c1cb Hotfix deadlocks on resource cleanup 2019-12-28 12:38:17 +01:00
Jonathan Behrens
461f114ad5 Make Origin3d::{x,y,z} all have type u32 2019-12-25 21:42:49 -05:00
yanchith
e9545c93ed Deduplicate Bind Group Layouts on creation
To make later bind group layout compatibility checks simpler (and
cheaper), deduplicate them on creation. If two bind group layouts with
same descriptors are requested, only one is created and the same id is
returned for both.
2019-12-17 18:32:33 +01:00
Dzmitry Malyshau
c0d6cf18e1 Refactor tracker initializers 2019-12-17 00:19:39 -05:00
Dzmitry Malyshau
d74c8cb5ae Refactor tracker stitches 2019-12-17 00:19:39 -05:00
Dzmitry Malyshau
109253247d Track render pass attachments in the pass tracker 2019-12-17 00:19:39 -05:00
Dzmitry Malyshau
38305c62f3 Fix tracking of render pass attachments 2019-12-15 23:10:38 -05:00
Dzmitry Malyshau
033624f160 Handle adapter enumeration failures better 2019-12-15 15:19:35 -05:00
Istvan Miklos
45be9035b7 Add Serialize/Deserialize derive to BufferDescriptor 2019-12-11 14:43:05 +01:00
Dzmitry Malyshau
bd24c20d4c Fix lock token lifetimes 2019-12-08 17:00:30 -05:00
Mac O'Brien
71cf7f0027 Re-export DeviceType 2019-12-07 15:05:53 -06:00
Mike Hommey
74d83fdedd Update smallvec to 1.0 2019-12-06 13:37:30 +09:00
Dzmitry Malyshau
486b1b6764 Remote buffer destruction 2019-12-03 08:59:22 -05:00
Dzmitry Malyshau
97766ab300 Get buffer sub data in wgpu-remote 2019-12-02 17:23:04 -05:00
Dzmitry Malyshau
2f74e227a8 Remote buffer mapping 2019-11-29 16:44:22 -05:00
bors[bot]
2006c07a57
Merge #387
387: Stop dynamic offset iteration when the bind groups stop r=grovesNL a=kvark

Fixes #386 

I imagine the code is not performance-optimal and could be improved. This PR focuses on correctness.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-11-29 02:08:19 +00:00
Dzmitry Malyshau
605620b20c Buffer creation in wgpu-remote 2019-11-28 17:18:25 -05:00
Dzmitry Malyshau
0880986a97 Stop dynamic offset iteration when the bind groups stop 2019-11-28 14:36:36 -05:00
Dzmitry Malyshau
1a2a37df7d Fix STORAGE_READ support 2019-11-25 14:30:03 -05:00
Dzmitry Malyshau
3908d2b5a1 Cleanup exports 2019-11-19 10:59:24 -05:00
Dzmitry Malyshau
98d28caffc Refactor internal texture tracking format 2019-11-18 22:07:15 -05:00
Dzmitry Malyshau
4e57c42c71 Initialize trackers with full selector - part 2 2019-11-18 09:20:16 -05:00
Dzmitry Malyshau
0569bc6956 Initialize trackers with full selector 2019-11-18 00:21:13 -05:00
Dzmitry Malyshau
6c632d1366 Separate native from the core 2019-11-16 00:36:23 -05:00