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>
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>
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>
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>
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>
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>
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>
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 :)
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>
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>
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>
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>
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>