Commit Graph

9013 Commits

Author SHA1 Message Date
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
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
bors[bot]
304ca7c5c2 [rs] Merge #77
77: Modify examples to use PowerPreference::Default r=kvark a=danaugrs



Co-authored-by: Daniel Salvadori <danaugrs@gmail.com>
2019-09-06 00:07:19 +00:00
bors[bot]
aa316279dc Merge #327
327: Select virtual GPU last in all power preferences r=kvark a=danaugrs



Co-authored-by: Daniel Salvadori <danaugrs@gmail.com>
2019-09-06 00:06:10 +00:00
Daniel Salvadori
05b68bbee6 Select virtual GPU last in all power preferences 2019-09-05 20:10:39 -03:00
Daniel Salvadori
84a33603dc [rs] Modify examples to use PowerPreference::Default 2019-09-05 19:14:53 -03:00
bors[bot]
8d2a82cc38 Merge #316
316: Testing adding iOS matrix. r=kvark a=seivan

I'm not sure `GLFW3` would work for iOS, but lets see what Travis says?

Co-authored-by: Seivan Heidari <seivan.heidari@icloud.com>
2019-09-05 14:44:51 +00:00
Seivan Heidari
18b790fba8 Adding iOS matrix for CI. 2019-09-05 11:45:47 +02:00
bors[bot]
a2956c0d42 Merge #325
325: Create vulkan instance on windows r=kvark a=danaugrs



Co-authored-by: Daniel Salvadori <danaugrs@gmail.com>
2019-09-03 21:33:33 +00:00
Daniel Salvadori
443a0d661f Create vulkan instance on windows 2019-09-03 17:41:52 -03:00
Dzmitry Malyshau
8d2eb6ee42 [rs] wgpu-native update to 40fb3fcdfd 2019-09-02 21:12:22 -04:00
bors[bot]
40fb3fcdfd Merge #319
319: Multiple binding fixes r=kvark a=kvark

Could be related to #315 (haven't confirmed)

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-09-01 04:22:59 +00:00
Dzmitry Malyshau
cc16b4b65a Fix binding compatibility checks 2019-08-31 00:56:05 -04:00
Dzmitry Malyshau
e97e54e4a3 Stop rebinding descriptors on the first incompatible 2019-08-31 00:56:05 -04:00
Dzmitry Malyshau
872bf21a9b Fix descriptor set offsets binding on pipeline change 2019-08-31 00:56:05 -04:00
bors[bot]
2acc0ebb62 Merge #314
314: Handle frame acquisition failure internally r=grovesNL a=kvark

Fixes #313, which is critical to get us running on Metal today.
In the nearest future, all that code will be removed in favour of using the alternative swapchain model.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-08-31 04:55:14 +00:00
bors[bot]
0f26def66f Merge #317
317: Fix building on ios r=grovesNL a=kvark

Fixes #315 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-08-31 04:29:41 +00:00
Dzmitry Malyshau
86bb809c39 Fix building on ios 2019-08-30 09:07:21 -04:00
Dzmitry Malyshau
d37ecdf248 Handle frame acquisition failure internally 2019-08-29 22:27:21 -04:00
bors[bot]
9b71766939 [rs] Merge #73
73: Update wgpu-native to the commit that has no backend features. r=grovesNL a=kvark

This change removes the dependency on gfx-rs backends, refactors
Adapter and Surface creation to be done from nothing.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-08-30 02:05:14 +00:00