Commit Graph

719 Commits

Author SHA1 Message Date
Dzmitry Malyshau
41132a3762 Don't panic on the lack of adapters 2019-10-28 22:40:57 -04:00
bors[bot]
6a6517832a
Merge #360
360: Update to latest rendy with gfx-0.4 r=kvark a=kvark



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-28 16:00:13 +00:00
Dzmitry Malyshau
271c709645 Update to latest rendy with gfx-0.4 2019-10-28 11:59:18 -04:00
bors[bot]
b71fc33c72
Merge #359
359: Make examples work again r=kvark a=GabrielMajeri

This PR fixes the C example code to not crash and actually run.

I've also added a few assertions to ensure a warning is emitted next time somebody forgots to increase `max_bind_groups` to something non-zero on device creation.

To help with debugging the examples, I've configured CMake to include debug info in the builds. Some new Makefile targets for the examples have been added to automate running them.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2019-10-26 21:08:16 +00:00
Gabriel Majeri
eb198a9c3e Fix C examples
Get the examples running again.

The compute example has been simplified to use only one buffer.

A new check has been added to ensure the `max_bind_groups`
device limit is properly set.
2019-10-26 22:13:53 +03:00
bors[bot]
94f43c1167
Merge #358
358: Remove all the IPC r=grovesNL a=kvark

Closes #146 
Closes #22

We have decided to use Gecko IPC for Firefox. `wgpu-remote` will therefore provide all the Rust glue that Gecko needs for client and server:
  - initialization/termination of client/server
  - ID management for the client
  - pass encoding blobs

In Servo, we'd need to enable `serde` feature of `wgpu-native` and potentially roll out a different remoting crate that would establish a protocol based on `ipc-channel`, as we wanted originally.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-26 13:54:52 +00:00
Dzmitry Malyshau
538c23b039 Implement shutdown for the remote server 2019-10-25 22:56:52 -04:00
Dzmitry Malyshau
e37149b3a8 Remove all the IPC 2019-10-25 12:06:12 -04:00
bors[bot]
c8d0da65ad
Merge #357
357: Explicit Global hubs r=grovesNL a=kvark

Fixes #354

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-25 02:08:56 +00:00
Dzmitry Malyshau
50997544c6 Formatting pass 2019-10-24 14:53:45 -04:00
Dzmitry Malyshau
41c433ed27 Refactor log usage 2019-10-24 14:53:07 -04:00
Dzmitry Malyshau
4851284150 Switch from remote feature to local 2019-10-24 14:52:44 -04:00
Dzmitry Malyshau
f67894c310 Explicit Global hubs 2019-10-24 14:52:19 -04:00
bors[bot]
ae5a78f828
Merge #356
356: Allow max_bind_groups to be missing, for now r=kvark a=kvark

Fixes  #355

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-24 14:51:05 +00:00
Dzmitry Malyshau
f3a0dd9b63
Allow max_bind_groups to be missing, for now 2019-10-24 10:50:08 -04:00
bors[bot]
a04a4b1cff
Merge #353
353: Always return an Id by request_adapter r=kvark a=kvark

Requesting adapters is a bit special in a sense that it's exactly the place where the backend selection happens. It accepts a list of Ids, and we need to always return one, so that the remote client knows which Id was actually used and clean up the others.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-23 22:49:34 +00:00
Dzmitry Malyshau
c4906ee36f Always return an Id by request_adapter 2019-10-23 14:31:36 -04:00
bors[bot]
50acc2909c
Merge #352
352: Fix compute pass resource binding r=kvark a=kvark

Follow-up to #348 
cc @grenlight @terrence2 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-22 14:08:54 +00:00
Dzmitry Malyshau
cf687604b9 Fix compute pass resource binding 2019-10-22 09:09:53 -04:00
Terrence Cole
78fbbba5e9 Support Limits::max_bind_groups (#348)
* Pass max_bind_count down into Binder.
* Use the existing hub.
* Remove accidental newline.
2019-10-14 21:57:05 -04:00
bors[bot]
5ba923c79f
Merge #344
344: Update deps r=kvark a=rukai

We should wait for https://github.com/rust-windowing/winit/pull/1191 to find its way into a winit release before merging this PR.

Co-authored-by: Rukai <rubickent@gmail.com>
2019-10-06 02:05:41 +00:00
Rukai
31ef688213 Updated deps 2019-10-06 11:17:57 +11:00
bors[bot]
33aee5250e
Merge #347
347: Add license headers to all Rust sources r=imnotalawyer a=kvark

Fixes #346 
the header is fairly small, so it shouldn't be in the way of editing files

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-10-04 19:31:03 +00:00
Dzmitry Malyshau
9c58a5d11a Add license headers to all Rust sources 2019-10-04 15:24:17 -04:00
bors[bot]
d79b279156
Merge #343
343: Document primary/secondary backend bit r=kvark a=rukai

Happy to add more detail, but this should be sufficient for the user to understand what PRIMARY/SECONDARY mean.

Co-authored-by: Rukai <rubickent@gmail.com>
2019-09-30 15:52:26 +00:00
bors[bot]
f523f2e36c
Merge #342
342: Fallback to D32 when D24 isn't available r=kvark a=grovesNL

The rationale is that D32 seems to be supported on more devices. Using D24 could be a future memory/performance optimization instead.

Otherwise if it's fairly trivial I could add the fallback path for D32 here instead, but I'm not sure how we intend for values in the `D24Unorm` depth range to work in general (i.e. compared to `D32Sfloat`). Maybe I missed some discussion about this, but I don't see it in the minutes.

cc @Yatekii 

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2019-09-28 16:40:13 +00:00
Joshua Groves
5080a20cb6 Disallow copying for D24Plus textures 2019-09-28 00:32:00 -06:00
Joshua Groves
e430a4cf40 Fallback to D32 when D24 isn't available 2019-09-27 23:44:26 -06:00
Rukai
194a155cae Document primary/secondary backend bit 2019-09-28 08:30:51 +10:00
bors[bot]
cbe197eb44
Merge #341
341: Track and destroy samplers r=kvark a=yanchith

This PR adds `ResourceId::Sampler`, `NativeResource::Sampler` and
`TrackerSet::samplers`. Samplers are (similarly to bind groups)
created with their own life guard and a device id to keep the device
ref count alive. Also added are `extern wgpu_sampler_destroy` and
`sampler_destroy`.

The rest of the implementation was guided by compiler errors, so there
is a good chance I didn't find something crucial that also needed
doing. Please check :)

I also imagine we might want to add the `Drop` impl for sampler in wgpu-rs.

Fixes: #231 

Co-authored-by: yanchith <yanchi.toth@gmail.com>
2019-09-24 17:11:49 +00:00
yanchith
758bb16d01 Make sure submissions are tracked 2019-09-24 19:04:35 +02:00
yanchith
ed8503ed6c Track and destroy samplers
This PR adds `ResourceId::Sampler`, `NativeResource::Sampler` and
`TrackerSet::samplers`. Samplers are (similarly to bind groups)
created with their own life guard and a device id to keep the device
ref count alive. Also added are `extern wgpu_sampler_destroy` and
`sampler_destroy`.

The rest of the implementation was guided by compiler errors, so there
is a good chance I didn't find something crucial that also needed
doing. Please check :)
2019-09-23 12:13:18 +02:00
bors[bot]
ac16063c60
Merge #340
340: print usage required during usage validation r=kvark a=m4b

fixes #339

Co-authored-by: m4b <m4b.github.io@gmail.com>
2019-09-16 14:44:32 +00:00
m4b
46501f296a print usage required during device usage validation
fixes #339
2019-09-15 22:27:25 -07:00
bors[bot]
c3609d71c9
Merge #331
331: Add a function to describe a device r=kvark a=paulkernfeld

This is for https://github.com/gfx-rs/wgpu-rs/pull/29

This successfully describes the device on my machine. I think I may have done the imports wrong. If so, apologies.

Co-authored-by: Paul Kernfeld <paulkernfeld@gmail.com>
2019-09-12 01:42:08 +00:00
bors[bot]
b045e7ea13
Merge #337
337: Fix life cycle of swap chain framebuffers r=grovesNL a=kvark

Fixes #78 

The new swapchain model requires framebuffers to be destroyed right after presentation.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-09-11 23:18:40 +00:00
bors[bot]
7ef8665ea3
Merge #338
338: Prefer the specific number of frames in a swap chain r=kvark a=kvark

Fixes https://github.com/gfx-rs/wgpu-rs/issues/72

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-09-11 17:26:44 +00:00
Dzmitry Malyshau
9c32dd57b1 Prefer the specific number of frames in a swap chain 2019-09-11 13:23:51 -04:00
Dzmitry Malyshau
050b716aef Fix life cycle of swap chain framebuffers 2019-09-10 09:16:51 -04:00
bors[bot]
499bf1d268
Merge #330
330: New swapchain model r=grovesNL a=kvark

Fixes #322
TODO:
- [x] Test on Metal
- [x] Test on DX12
- [x] Test on Vulkan
- [x] Try embedding the backend information into `SwapChainId`
- [x] Wait for https://github.com/amethyst/rendy/pull/202

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-09-10 00:55:24 +00:00
Dzmitry Malyshau
5f1c432706 New swapchain model 2019-09-09 20:53:35 -04:00
Paul Kernfeld
36cccb827d Add a way to describe an adapter 2019-09-09 20:28:30 -04:00
bors[bot]
510a23f2fa
Merge #332
332: Validate resource usage flags when used r=kvark a=yanchith

This PR adds usage flag validations to the functions discussed in https://github.com/gfx-rs/wgpu/issues/228#issuecomment-528949445 and https://github.com/gfx-rs/wgpu/issues/228#issuecomment-528953096

I added `usage` fields to `Buffer` and `Texture` for convenience.

The validations themselves are run before much else happens (seemed clearer that way). This means certain `VecMap`s and `FastHashMap`s might be queried more than necessary, though. 

I also left one TODO in, which I'd like to resolve: With what usage flags should the swapchain textures be created? Currently it initializes the texture resource trackers with `UNINITIALIZED`, so I just copied the same flag for the texture. This just happens to work (that is not trigger the validations I added), because its value, `UNINITIALIZED`, pretends to be every usage flag by having all bits set. Is that by design?

Closes #228 ~(except for `BufferUsage::INDIRECT`, for which I can create another issue)~

Co-authored-by: yanchith <yanchi.toth@gmail.com>
2019-09-09 14:36:59 +00:00
yanchith
141f4f71eb Validate resource usage flags when used 2019-09-09 15:44:15 +02:00
bors[bot]
5512c03a09
Merge #333
333: Make Vulkan optional on Apple r=grovesnL a=kvark

Fixes #321

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-09-09 01:07:58 +00:00
Dzmitry Malyshau
fe89c52834 Make Vulkan optional on Apple 2019-09-07 21:51:34 -04:00
bors[bot]
88204b9d86
Merge #329
329: Export function wgpu_render_pass_set_index_buffer r=kvark a=alichay

The function didn't have the `#[no_mangle]` flag, that's all.

Co-authored-by: Alichay <allisonalichay@gmail.com>
2019-09-07 02:31:04 +00:00
Alichay
306dd09626 Exported function wgpu_render_pass_set_index_buffer 2019-09-06 20:49:11 -05:00
bors[bot]
412198d829
Merge #328
328: Switch to use gfx-rs latest and greatest master r=kvark a=kvark

I'm going to implement #322 as a follow-up commit, but this one is already standalone and mergeable.
Closes #320 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-09-06 14:07:47 +00:00
Dzmitry Malyshau
988d78435a Switch to use gfx-rs latest and greatest master 2019-09-06 10:05:53 -04:00