Commit Graph

359 Commits

Author SHA1 Message Date
Dzmitry Malyshau
6ce9cbd679 Remove Rust wrapper and examples 2019-05-10 20:40:42 -04:00
bors[bot]
97d1ba345e Merge #164
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>
2019-05-10 19:59:26 +00:00
Dzmitry Malyshau
8c75f35948 Fix locking order in texture view creation and destruction 2019-05-10 15:57:25 -04:00
bors[bot]
0edf927e5b Merge #159
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>
2019-05-10 12:00:47 +00:00
bors[bot]
d1d37df383 Merge #154
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>
2019-05-10 11:42:11 +00:00
Dzmitry Malyshau
664fcdc1fa Add GPU timeout, fix active submission processing order 2019-05-09 14:59:28 -04:00
bors[bot]
aec590735b Merge #157
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>
2019-05-09 13:21:50 +00:00
Rukai
5cce1a2edb Add multithreaded_compute test 2019-05-09 12:17:40 +10:00
Dzmitry Malyshau
3f1e9ab03b Move callbacks out of the locking path 2019-05-07 11:07:55 -04:00
bors[bot]
455f0456c0 Merge #153
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>
2019-05-07 12:40:26 +00:00
Rukai
16cc03be31 Update deps + upgrade examples to rust 2018 2019-05-07 22:38:41 +10:00
bors[bot]
6b92c37fa0 Merge #151
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>
2019-05-06 11:40:18 +00:00
Dzmitry Malyshau
31d11be058 Install cbindgen on CI 2019-05-04 10:38:58 -04:00
bors[bot]
b12b4c135e Merge #136
136: Use strongly typed Ids r=kvark a=psincf

fixes #61 

Co-authored-by: psincf <44228825+psincf@users.noreply.github.com>
2019-05-04 02:44:24 +00:00
bors[bot]
f722a8f631 Merge #140
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>
2019-05-04 02:31:29 +00:00
psincf
64d1250bfa fixes hub.rs 2019-05-04 02:03:37 +02:00
Rukai
3662987220 Creating buffers with size 0 actually creates them with size 1 2019-05-04 09:46:46 +10:00
psincf
2e30c611ae Make IdentityManager strongly typed 2019-05-04 01:20:56 +02:00
Dzmitry Malyshau
1c350cc4af Assert on swapchain output usage before presenting 2019-05-03 10:45:39 -04:00
bors[bot]
f015eb22d8 Merge #149
149: Remove wgpu_buffer_set_sub_data function r=kvark a=Atul9

closes #145 

Co-authored-by: Atul Bhosale <atul1bhosale@gmail.com>
2019-05-03 13:50:39 +00:00
Atul Bhosale
3330509678
Remove wgpu_buffer_set_sub_data function 2019-05-03 07:01:59 +05:30
psincf
10547b937f add serde into scope and fix wgpu-remote 2019-05-01 13:31:56 +02:00
psincf
565e5fdfeb make trait TypedId:From<Id> 2019-05-01 12:15:23 +02:00
psincf
f7794fd82b change PhantomData syntax 2019-05-01 12:11:20 +02:00
psincf
bbef2b7622 Put new_id! in define_id! 2019-05-01 11:55:28 +02:00
psincf
bfc983a8cc Clean code 2019-05-01 11:55:28 +02:00
psincf
44cf64495a Use strong type 2019-05-01 11:55:28 +02:00
bors[bot]
1e177d0813 Merge #144
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>
2019-05-01 02:14:57 +00:00
Dzmitry Malyshau
6ac666a5aa Introduce ClientFactory 2019-04-30 15:37:46 -04:00
Dzmitry Malyshau
61fca00f34 Remove wgpu-bindings in favor of configuration scripts 2019-04-30 12:45:05 -04:00
Dzmitry Malyshau
0011d9f4ff Global manager for instance names on the remote client 2019-04-30 09:19:40 -04:00
Dzmitry Malyshau
52ee3e019c Remote example and improved header, tested on CI 2019-04-29 22:41:09 -04:00
bors[bot]
5ec6f35368 Merge #139
139: Scissors test r=kvark a=snuk182

Closes #138 

Co-authored-by: Serhii Plyhun <snuk188@gmail.com>
2019-04-28 02:28:16 +00:00
bors[bot]
a1908c1873 Merge #142
142: Correct Link r=kvark a=ShalokShalom



Co-authored-by: ShalokShalom <shalokshalom@protonmail.ch>
2019-04-28 02:14:02 +00:00
Serhii Plyhun
092bcc4afb Scissor test 2019-04-28 00:45:37 +02:00
ShalokShalom
3c12edd0b7
Correct Link 2019-04-27 21:05:39 +02:00
bors[bot]
6f810f4f23 Merge #131
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>
2019-04-26 22:34:55 +00:00
Alexis Sellier
c468840eee
Support dynamic offsets
Closes #125

* Add support for dynamic offsets when setting a bind group.
* Add new binding types: `UniformBufferDynamic` and `StorageBufferDynamic`
2019-04-26 22:20:54 +02:00
bors[bot]
ee3025c4d8 Merge #130
130: Format code using 'cargo fmt' r=kvark a=Atul9



Co-authored-by: Atul Bhosale <atul1bhosale@gmail.com>
2019-04-26 16:59:20 +00:00
Atul Bhosale
af38d79d79
Format code using 'cargo fmt' 2019-04-26 22:01:47 +05:30
bors[bot]
993293f709 Merge #127
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>
2019-04-25 13:36:59 +00:00
Dzmitry Malyshau
06d34830d4 Update OSX CI version to 9.4 2019-04-25 08:29:53 -04:00
Dzmitry Malyshau
8578643f38 Rename DestroyedResources to PendingResources 2019-04-25 08:29:40 -04:00
Dzmitry Malyshau
41141b1ae0 Wait for fences instead of device idle 2019-04-24 22:42:49 -04:00
Dzmitry Malyshau
aa1f876de3 Assert on a mapping buffer being used 2019-04-23 17:26:31 -04:00
Dzmitry Malyshau
326af8cce6 Do mapping transitions earlier. 2019-04-23 17:22:53 -04:00
Dzmitry Malyshau
7200f727e2 Expose device polling 2019-04-23 16:56:17 -04:00
Dzmitry Malyshau
e2dcac91d2 Round up mappable buffer size to non-coherent atom, if needed 2019-04-23 16:27:39 -04:00
bors[bot]
0a60c82c43 Merge #128
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>
2019-04-22 21:13:09 +00:00
psincf
e70b01ccc0
Fix winit event loop in the triangle example 2019-04-22 22:59:25 +02:00