1080: Fix the validation of vertex buffer sizes r=kvark a=JCapucho
**Connections**
None that i know of
**Description**
~~The vertex buffer size (in vertices) was being divided by stride causing the limit to be lower than it was supposed to be.~~
This bug wasn't triggered earlier because if the stride was 0 it wouldn't perform any calculation and the stride was only set when a set pipeline command was received and the `VertexState` `inputs` were already created so the following commands would work:
```
SetPipeline with 1 vertex buffer
SetVertexBuffer with only 4 vertices
Draw 6 vertices
```
This would have passed validation while this wouldn't
```
SetPipeline with 1 vertex buffer of stride 8
SetVertexBuffer with 4 vertices
SetPipeline with 1 vertex buffer of stride 8
SetVertexBuffer with 4 vertices
Draw 3 vertices
```
Now all draw calls have proper vertex validation and not only after the `inputs` are populated
**Testing**
This change was tested after debugging an issue with the draw calls failing in a specific order in [veloren](https://gitlab.com/veloren/veloren/-/tree/imbris/wgpu-master-rebased)
Co-authored-by: Capucho <jcapucho7@gmail.com>
1078: Switch paytests to WGSL r=grovesNL a=kvark
**Connections**
Closes#1073
Updates naga to "gfx-4" tag.
Updates gfx to https://github.com/gfx-rs/gfx/pull/3518
**Description**
This is the first use of WGSL in our codebase! Much nicer to have WGSL for tests than keeping GLSL+SPV pairs.
Interestingly, the tests go through Naga without ever touching SPIR-V now, unless running on Vulkan.
**Testing**
Tests itself - this change applies to testing infra.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
664: Integrate ETC and ASTC textures in Skybox example r=kvark a=cwfitzgerald
Depends on https://github.com/gfx-rs/wgpu/pull/1074
Converts skybox example to mip-mapped files in:
- Bgra8
- Bc1
- ETC2
- ASTC4x4
Looks quite good now with mipmapping and trilinear filtering even at small resolutions.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1074: Implement ETC2 and ASTC textures r=kvark a=cwfitzgerald
**Connections**
Closes#1070. Makes progress towards #1069.
**Description**
This PR has multiple functions:
- Adds ETC and ASTC compressed textures behind features.
- Adds three helper functions on `Extent3d` that help in calculating mip sizes: `at_mip_level`, `max_mips`, and `physical_size`.
- Refactors various conversions into a public `TextureFormat::describe` function. I have used a decl macro to ease in the declaration and modifcation of an otherwise horribly verbose function.
I have tried to use clever multi-select based data copying to reduce the possibility for errors, but there's a _lot_ of data moving around here.
**Testing**
Upcoming wgpu-rs pr adding wider compressed texture support to the skybox example. Helper functions were tested with doctests.
Marked as draft until I can get the wgpu-rs pr done and prove it works, it is, however, ready for review.
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
1076: Fix player warnings r=kvark a=kvark
```
warning: unused `std::result::Result` that must be used
--> player/src/bin/play.rs:142:29
|
142 | ... gfx_select!(device => global.device_create_swap_chain(device, surface, &desc));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_must_use)]` on by default
= note: this `Result` may be an `Err` variant, which should be handled
= note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
warning: unused `std::result::Result` that must be used
--> player/src/bin/play.rs:147:29
|
147 | ... gfx_select!(device => global.swap_chain_present(id));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this `Result` may be an `Err` variant, which should be handled
= note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
warning: unused `std::result::Result` that must be used
--> player/src/bin/play.rs:173:21
|
173 | gfx_select!(device => global.device_poll(device, true));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this `Result` may be an `Err` variant, which should be handled
= note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
warning: 3 warnings emitted
```
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1071: Add pervasive Naga support to shader module loading r=cwfitzgerald a=kvark
**Connections**
Depends on https://github.com/gfx-rs/naga/pull/299 and https://github.com/gfx-rs/gfx/pull/3503Closes#1072
**Description**
The purpose of the PR is to support Naga modules everywhere.
As a requirement, it updates the gfx-rs version used.
Most of the logic is dedicated towards building a shader interface,
where previously we just used naga's IR. Now we have our own mini-IR.
**Testing**
Tested in https://github.com/gfx-rs/wgpu-rs/pull/663 (without the experimental feature).
Enabling the experimental feature doesn't work even on the play test that we have - https://github.com/gfx-rs/naga/issues/300
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
The purpose of the PR is to support Naga modules everywhere.
As a requirement, it updates the gfx-rs version used.
Most of the logic is dedicated towards building a shader interface,
where previously we just used naga's IR. Now we have our own mini-IR.
659: Temporarily skip debug labels for web backend r=kvark a=grovesNL
Debug labels aren't currently supported by gecko. We can re-enable these later.
Co-authored-by: Joshua Groves <josh@joshgroves.com>
1019: Match upstream API changes for IndexFormat r=kvark a=kejor
**Connections**
#978
**Description**
Match upstream API changes for IndexFormat.
- `index_format` from `VertexStateDescriptor` is now a `Option`
- `RenderCommand::SetIndexBuffer` now has a `index_format` attribute
- The index format for execution is now set when matched both `RenderCommand::SetPipeline` and `RenderCommand::SetIndexBuffer`.
**Testing**
Tested with the examples of e5f82a2197
---
Should I implement this?0855ad9b97/spec/index.bs (L3703)
Co-authored-by: kejor <kevinoviedorueda@gmail.com>
655: Update to gfx from master r=kvark a=kvark
Depends on https://github.com/gfx-rs/wgpu/pull/1057
Expect the unexpected wrt the gpu-descriptor, which hasn't been tested much!
Also refactors the CI a bit to reduce the number of jobs by moving out `wasm` into a separate job.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
1057: Move to gfx master r=cwfitzgerald a=kvark
**Connections**
Fixes#1027
**Description**
Switches us to gfx dependency on github.
Note: there is problem with libc dependency - https://github.com/timothee-haudebourg/khronos-egl/issues/7 - that would need to be resolved before we get this version of the code into either Gecko or Servo.
**Testing**
Ran wgpu-rs examples
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
654: Use web-sys release instead of patch r=kvark a=grovesNL
`patch` isn't necessary anymore because there's a new release of web-sys and wasm-bindgen
Fixes#637
Co-authored-by: Joshua Groves <josh@joshgroves.com>
1056: Replace gfx-descriptor by gpu-descriptor r=cwfitzgerald a=kvark
**Connections**
Unblocks #1027
cc @zakarumych
**Description**
Removes the last link we had between us and gfx-rs.
**Testing**
Tested on wgpu-rs
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>