Commit Graph

2761 Commits

Author SHA1 Message Date
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
bors[bot]
82dedda761 [rs] Merge #99
99: Update dependencies (including wgpu commit) r=kvark a=rukai



Co-authored-by: Rukai <rubickent@gmail.com>
2019-10-19 02:22:26 +00:00
Rukai
bd5575d3b9 [rs] Update dependencies 2019-10-19 09:43:15 +11:00
bors[bot]
48a571ddf2 [rs] Merge #98
98: Add pixels to the friends list r=kvark a=parasyte

We're using `wgpu` to create the world's most powerful pixel frame buffer. 😂

The crate isn't published yet. Waiting for `wgpu` 0.4: https://github.com/parasyte/pixels/issues/16

Co-authored-by: Jay Oster <jay@kodewerx.org>
2019-10-16 13:09:20 +00:00
Jay Oster
626a884af5 [rs] Add pixels to the friends list 2019-10-15 18:58:10 -07: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]
35546904ca [rs] Merge #92
92: Fix docs describing how to create a surface r=grovesNL a=parasyte

I noticed this issue as I was combing the source.

Co-authored-by: Jay Oster <jay@kodewerx.org>
2019-10-03 12:33:24 +00:00
Jay Oster
8b6c09722e [rs] Fix docs describing how to create a surface 2019-10-02 21:15:10 -07: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
bors[bot]
05f54470ef [rs] Merge #89
89: Adapter::get_info r=kvark a=paulkernfeld

This more or less addresses #7.

If the example is too trivial, I'm happy to remove it.

Co-authored-by: Paul Kernfeld <paulkernfeld@gmail.com>
2019-09-23 16:26:25 +00: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
Paul Kernfeld
4b5afb8ba1 [rs] Adapter describe example 2019-09-21 21:10:58 -04:00
Paul Kernfeld
f7bce2cc4e [rs] Add Adapter::get_info 2019-09-21 21:10:58 -04: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]
728963b50c [rs] Merge #87
87: Add indirect draw/dispatch methods r=kvark a=swiftcoder

It looks like the indirect draw/dispatch methods are present in wgpu-native, but not yet exposed in the wrapper.

Co-authored-by: Tristam MacDonald <swiftcoder@gmail.com>
2019-09-16 01:12:45 +00:00
Tristam MacDonald
9512d6a21c [rs] Add indirect draw/dispatch methods 2019-09-15 12:57:22 -07:00
bors[bot]
8291b56373 [rs] Merge #86
86: Update readme with Yatekii's fork of imgui-wgpu-rs r=kvark a=Yatekii



Co-authored-by: Noah Hüsser <yatekii@yatekii.ch>
2019-09-15 00:13:22 +00:00
Noah Hüsser
0e3b6d7ea1 [rs] Update readme with Yatekii's fork of imgui-wgpu-rs 2019-09-15 00:49:05 +02:00
Dzmitry Malyshau
43621c5160 [rs] Update wgpu-native revision to latest 2019-09-11 22:15:58 -04: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
bors[bot]
c4a3a33b2b [rs] Merge #83
83: Propagate making Vulkan backend available to wgpu-rs r=kvark a=yanchith

`wgpu-native` has `gfx-backend-vulkan` feature which makes Vulkan available on macOS. This adds the feature to `wgpu-rs` also.

Co-authored-by: yanchith <yanchi.toth@gmail.com>
2019-09-10 14:05:43 +00:00
yanchith
2101e405cf [rs] Propagate making Vulkan backend available to wgpu-rs 2019-09-10 15:27:22 +02:00
bors[bot]
b01a4bb169 [rs] Merge #82
82: Return Queue separately r=grovesNL a=kvark

What problem is this PR trying to solve? We want `Device` to be freely accessible from multiple threads/objects and internally synchronized. `Arc<Device>` seems like a natural choice of such a sharable object, especially since all except one methods are `&self`.

That one method is `get_queue()`, and it returns a temporary object `Queue<'a>`. If we turn it into `&self`, we'd end up with multiple instances of `Queue` created at any time, which contradicts the initial design (of this Rust wrapper). If it stays `&mut` and the user wraps the device into `Arc`, they'll never be able to submit any work...

So this PR solves this by moving the `Queue` completely outside of the device.

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2019-09-10 13:27:14 +00:00
Dzmitry Malyshau
1729ca8b94 [rs] Return Queue separately 2019-09-10 09:26:18 -04:00
Dzmitry Malyshau
050b716aef Fix life cycle of swap chain framebuffers 2019-09-10 09:16:51 -04:00
bors[bot]
559e5ceb33 [rs] Merge #80
80: Update to the new swapchain model r=trivial a=kvark

Fixes #74 
Fixes https://github.com/gfx-rs/wgpu/issues/292

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2019-09-10 01:44:55 +00:00
Dzmitry Malyshau
5baac54eb9 [rs] Update to the new swapchain model 2019-09-09 21:39:55 -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