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>
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 :)
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>
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>
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>
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>
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>
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>
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>
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>
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>
This PR removes optional backend features in favor of run-time
selection at the `request_adapter` entry point. Adapters from all
supported gpu backends on the platform are reported.
It also makes gfx-rs dependency to be public (for now).
This change merges `Id` with `GenericId` and abstracts away its contents, exposing itself as just u64. This will allow us to encode the backend type into it, in addition to index and epoch.
It also refactors `TypedId` to have a single function extracting all the fields, since this is how it's used all the times anyway.
307: Add cubemap hint to multiple of 6 layers textures r=kvark a=LaylConway
This is an attempt at addressing #306. Vulkan has specific requirements on what can and can't be marked with the CUBE hint.
Co-authored-by: Layl <2385329-layl@users.noreply.gitlab.com>
302: Fixed pipeline barriers that are not transitions r=grovesNL a=kvark
The actual fix is a one-liner: `u.start != u.end` bit in `PendingTransition::record`. The case is relatively new - as of #281, which I haven't tested extensively.
The PR also improves our logging for further assistance with similar issues... but the most annoying piece is that I would find this much much earlier if I didn't ignore the result here: `let _ = state.change(...)`. Let it be the lesson to all of us :)
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>