413: Improve docs for main crate and `hello-triangle` example r=cwfitzgerald,kvark a=GabrielMajeri
Some minor fixes for the main crate docs, as well as some comments in the `hello-triangle` example.
Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
753: Deduplicate BindGroupLayout by value r=cwfitzgerald a=kvark
**Connections**
Fixes#335
**Description**
BGL now has distinct `MultiRefCount` type with a bit of a hacky logic to support deduplication.
Good review is needed!
**Testing**
Ran wgpu-rs examples.
The actual new logic is NOT tested enough!
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
752: gfx-memory update r=trivial a=kvark
**Connections**
Switches gfx-extras to https://github.com/gfx-rs/gfx-extras/pull/18Fixes#750
**Description**
Includes important correctness fixes.
**Testing**
Tested on wgpu-rs examples on macOS.
Also, by @cwfitzgerald having the repro case of #750
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
751: Convert Extensions + Capabilities into Features r=kvark a=cwfitzgerald
**Connections**
Based on upcoming webgpu changes.
**Description**
Does what it says on the tin. The only notable change was classifying the AnisotropicFiltering extension as a WebGPU extension (per https://github.com/gpuweb/gpuweb/issues/696, but no idea if that's the correct interpretation)
**Testing**
Will be tested by upcoming wgpu-rs PR.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
408: Staging belt r=kyren a=kvark
Implementing the belt itself isn't too hard, but integrating it with the example framework and winit's event loop is somewhat challenging. Perhaps, there needs to be a `LocalSpawner` parameter to `render()` like I did [in vange-rs](e7bc944ef5/bin/boilerplate.rs (L26))?
Edit: code is all ready and shiny... but it does NOT work. Buffers don't come back from mapping for some reason.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
Co-authored-by: kyren <kerriganw@gmail.com>
748: Allow intra doc link resolution failures, because they actually succeed when they need to but rust doesnt know r=kvark a=rukai
**Description**
cargo doc will create a lot of warnings due to the intra doc links pointing to wgpu.
The links work fine, but the warnings are no good because they show up when any any crate dependent on wgpu runs cargo doc.
**Testing**
Ran cargo doc from wgpu-types:
* before: warnings from this crate.
* after: no warnings from this crate.
Ran cargo doc from wgpu:
* before: warnings from this crate
* after: no warnings from this crate
Co-authored-by: Rukai <rubickent@gmail.com>
400: Added test for "capture" example r=kvark a=bfrazho
I've added a test to validate the capture example. I was planning on using the existing "screenshot.png" that was in there for the assertion for the test, but apparently was slightly different from the one that I was generating. I ended up replacing the screenshot.png with what the test was generating.
I'm a little concerned that they were different from the start, but maybe the png generating library made some small changes over time. I did check to make sure that it generated the same png on Windows and Linux on the same computer.
Let me know if there is anything that you would like me to change!
Co-authored-by: Brian <brian@linux-ccip.lan>
747: Custom implement Debug for RenderCommand and ComputeCommand r=kvark a=kunalmohan
This would avoid unnecessarily long debug logs for Render and Compute passes to some extent. I am not sure if it would be helpful to print `dynamic_offsets` and `string_data` under `BasePass` without the content of related `Compute/Render Command`.
<!--**Connections**
_Link to the issues addressed by this PR, or dependent PRs in other repositories_
**Description**
_Describe what problem this is solving, and how it's solved._
This would avoid
**Testing**
_Explain how this change is tested._
Non-trivial functional changes would need to be tested through:
- [wgpu-rs](https://github.com/gfx-rs/wgpu-rs) - test the examples.
- [wgpu-native](https://github.com/gfx-rs/wgpu-native/) - check the generated C header for sanity.
Ideally, a PR needs to link to the draft PRs in these projects with relevant modifications.
See https://github.com/gfx-rs/wgpu/pull/666 for an example.
If you can add a unit/integration test here in `wgpu`, that would be best.
-->
Co-authored-by: Kunal Mohan <kunalmohan99@gmail.com>
749: Tweak the logging a bit to make debug level usable r=non-controversial a=kvark
**Connections**
Nothing
**Description**
We should have somewhat stricter guidelines on what is ok in Debug level and what not. Previously, we printed all the tracking state on each command buffer and each submit. Since these happen every frame, and the amount of stuff used by a command buffer is not really limited, this resulted in a ton of spam, hiding legitimate Debug messages.
This PR leaves the tracker state outputs for things that are one-time, such as bind groups and render bundles, but moves out the per-frame tracking to the Trace level.
**Testing**
Running wgpu-rs examples.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
removed some warnings in the capture test about not handling results, and put expect messages around them
separated png logic from the rest of gpu logic in the capture example
refactored capture test to do assertion based on data rather than the output png
switched assertion for capture test to only check for red pixels instead of comparing to a raw buffer as a file
cleaned up capture example test to get rid of warnings
407: Build Docs with Nightly r=kvark a=cwfitzgerald
This builds docs with nightly by default. We use intra-doc links which is currently only supported with nightly. docs.rs also uses the latest nightly to build our code, so this will match behavior with docs.rs. I added a fallback to stable in case nightly has issues so we still have working docs.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
395: First Phase of Tracing Transition r=kvark a=cwfitzgerald
## Connections
This is the wgpu-rs component of https://github.com/gfx-rs/wgpu/pull/740.
## Notable Changes
- Added annotations for non-trivial wrapper functions
- Enabled building all features on docs.rs
- Took a dep on tracing.
- Fixes an assert that randomly stopped compiling.
- Added env variable WGPU_CHROME_TRACING which will be a path to the output chrome trace, if the feature is enabled.
- Added feature which corresponds directly to wgc feature.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
744: Add `backends!` and `backends_map!` macros to code duplication r=kvark a=Kimundi
**Description**
The source code is doing a lot of things duplicated for each backend, which leads to code duplication and harder to read code.
This PR attempts to improve the situation by introducing a `backends!` and `backends_map!` for doing the code duplication automatically.
**Testing**
The macro have unit tests for checking that they work correctly.
Co-authored-by: Marvin Löbel <loebel.marvin@gmail.com>
740: First Phase of Tracing Transition r=kvark a=cwfitzgerald
## Connections
First step in the implementation of #491. https://github.com/gfx-rs/wgpu-rs/pull/395
## Description
This adds the tracing crate, implements a tracing "layer" for chrome tracing, and instruments every entrypoint into wgpu.
Tracing is added as a main dependency. A feature is added called `subscriber` which guards the tracing and default logger implementation, as that adds 3 dependencies.
The main macro is there to make creating a span a simple one line process. This macro will come in useful in the next couple stages. Use of this macro is used unqualified with it imported into scope as that style allows IntelliJ ides to actually find the macro.
I also removed a really annoying warning that was driving me crazy.
This PR does not make sure the logging output from tracing is up to snuff, that will be done when logging output and conversion is the priority.
Both commits should compile individually, so shouldn't need to be squashed.
## Testing
This PR was tested with the wgpu-rs PR on various examples, as well as my personal project.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
743: Derive Serialize and Deserialize for HostMap r=kvark a=kunalmohan
**Connections**
_Link to the issues addressed by this PR, or dependent PRs in other repositories_
**Description**
_Describe what problem this is solving, and how it's solved._
Also a switch from `f32::MAX` to `std::f32::MAX`
**Testing**
_Explain how this change is tested._
<!--
Non-trivial functional changes would need to be tested through:
- [wgpu-rs](https://github.com/gfx-rs/wgpu-rs) - test the examples.
- [wgpu-native](https://github.com/gfx-rs/wgpu-native/) - check the generated C header for sanity.
Ideally, a PR needs to link to the draft PRs in these projects with relevant modifications.
See https://github.com/gfx-rs/wgpu/pull/666 for an example.
If you can add a unit/integration test here in `wgpu`, that would be best.
-->
Co-authored-by: Kunal Mohan <kunalmohan99@gmail.com>
746: Fix RODS layout r=trivial a=kvark
**Connections**
Fixes a validation error on the water example:
> VALIDATION [UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout (1303270965)] : Validation Error: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x5626e376bc90, name = Main Command Encoder, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | Submitted command buffer expects VkImage 0x390000000039[Depth Buffer] (subresource: aspectMask 0x2 array layer 0, mip level 0) to be in layout VK_IMAGE_LAYOUT_GENERAL--instead, current layout is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
object info: (type: COMMAND_BUFFER, hndl: 94725024955536, name: Main Command Encoder)
**Description**
The problem came from the fact that I totally refactored the part that figures out how attachments I used *after* I thought about the relevant layouts, and somehow let this bug slip in.
**Testing**
Tested on the water example.
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
741: Fix the default lod_max_clamp value for the SamplerDescriptor r=kvark a=hasenbanck
**Connections**
As suggested in https://github.com/gfx-rs/wgpu-rs/pull/397
**Description**
The current default value for the ```lod_max_clamp``` of a sampler is 0.
This would deactivate mipmapping alltogether. Setting the default to ```f32::MAX``` makes sure to always enable it. It's the default value apple uses in Metal, it seems to be valid usage in Vulkan (```maxLod``` in ```VkSamplerCreateInfo```) and in DX12 (```MaxLOD``` in ```D3D12_SAMPLER_DESC```).
Co-authored-by: Nils Hasenbanck <nils@hasenbanck.de>
401: Readme updates about the Gecko branch r=grovesNL a=kvark
402: Re-enable auto-deploy from gecko branch r=kvark a=grovesNL
As mentioned on Matrix, the `gecko` branch should be safe to use for auto-deployment to GitHub pages for the wgpu-rs examples on wasm.
We can use the `gecko` branch for now and eventually switch back to `master`.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
Co-authored-by: Joshua Groves <josh@joshgroves.com>
396: Update wgpu without peek-poke r=cwfitzgerald a=kvark
Depends on https://github.com/gfx-rs/wgpu/pull/739
Everything works, however I think it's worth changing the render pass color/depth/stencil descriptors to be more rusty, e.g.
```rust
struct ColorAttachmentDescriptor {
attachment: &'a TextureView,
resolve_target: Option<&'a TextureView>,
clear_color: Option<Color>,
store_result: bool,
}
enum DepthStencilChannel<T> {
ReadOnly,
Mutable { clear_value: Option<T>, store_result: bool },
}
struct DepthStencilAttachmentDescriptor {
}
```
This would also involve wgpu-type/wgpu-core changes, but can be done as a follow-up (don't want to block on them).
There is a value in doing it in this PR, so that end users don't get multiple disruptions, but we need to find a proper shape first.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>