Commit Graph

2761 Commits

Author SHA1 Message Date
Noah Charlton
b71c47a064 Remove extern "C" from set_index_buffer 2020-12-07 17:03:54 -05:00
bors[bot]
071ccf24c9 Merge #1080
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>
2020-12-07 15:48:11 +00:00
Capucho
713c23bc42 Grow the VertexState inputs in SetPipeline 2020-12-07 15:45:20 +00:00
bors[bot]
d10cf8e198 [rs] Merge #669
669: Update wgpu with Naga changes, replace hello-triangle shaders with WGSL r=cwfitzgerald a=kvark



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-12-07 15:15:16 +00:00
Dzmitry Malyshau
95dcacd1ad [rs] Update wgpu with Naga changes, replace hello-triangle shaders with WGSL 2020-12-07 09:45:24 -05:00
bors[bot]
4846e41eb0 Merge #1078
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>
2020-12-07 06:33:02 +00:00
Dzmitry Malyshau
a316fff427 Update Naga to gfx-4, update gfx with GL fixes 2020-12-07 01:30:52 -05:00
bors[bot]
19e5c748ad [rs] Merge #664
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>
2020-12-06 22:27:35 +00:00
Connor Fitzgerald
20689c32d2 [rs] Integrate ETC and ASTC textures in skybox example 2020-12-06 16:51:57 -05:00
Dzmitry Malyshau
3f33434c6f Enable experimental translation to playtests 2020-12-06 15:14:14 -05:00
Dzmitry Malyshau
dccc57e7b5 Switch playtests to WGSL 2020-12-06 14:51:23 -05:00
bors[bot]
17b475ae6a [rs] Merge #663
663: Shader module descriptor r=cwfitzgerald,grovesNL a=kvark

Depends on https://github.com/gfx-rs/wgpu/pull/1071
Fixes #665
Based on #662

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-12-06 02:13:54 +00:00
bors[bot]
7b886f4b1e Merge #1074
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>
2020-12-06 00:31:39 +00:00
Connor Fitzgerald
19fb491262 Fix validation of compressed mipmaps 2020-12-05 19:30:26 -05:00
Connor Fitzgerald
8f430ab1ef Implement ETC2 and ASTC textures 2020-12-05 19:30:26 -05:00
bors[bot]
d430e044b5 Merge #1076
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>
2020-12-05 23:56:38 +00:00
Dzmitry Malyshau
91a66b4b4a Fix player warnings 2020-12-05 18:55:27 -05:00
Dzmitry Malyshau
47f471bebb [rs] Introduce ShaderModuleDescriptor 2020-12-05 18:53:37 -05:00
bors[bot]
9960ded7ae Merge #1071
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/3503
Closes #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>
2020-12-05 21:34:33 +00:00
Dzmitry Malyshau
749f737c89 Add pervasive Naga support to shader module loading
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.
2020-12-05 11:31:03 -05:00
bors[bot]
71a7ffe7b5 [rs] Merge #662
662: API and examples update for index_format r=kvark a=kejor

__Connections__
#608 https://github.com/gfx-rs/wgpu/issues/978 https://github.com/gfx-rs/wgpu/pull/1019

__Description__
Use new API from 4513fb2b83 where `wgpu_render_pass_set_index_buffer` and `wgpu_render_bundle_set_index_buffer` receive an `index_format` and `VertexStateDescriptor`'s `index_format` is an `Option`. The examples were updated accordingly.

Co-authored-by: kejor <kevinoviedorueda@gmail.com>
2020-12-05 02:14:38 +00:00
kejor
fe1a76dee7 [rs] API and examples update for index_format 2020-12-04 20:29:42 -05:00
Dzmitry Malyshau
d164b0dbc6 Add license to big-picture.xml 2020-12-03 14:52:38 -05:00
Dzmitry Malyshau
41c658df7a [rs] Fix map_extent_3d in the Web backend 2020-12-02 17:32:36 -05:00
bors[bot]
4b7a0161a3 [rs] Merge #659
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>
2020-12-02 04:12:45 +00:00
Joshua Groves
1431e7f9d1 [rs] Temporarily skip debug labels for web backend
Debug labels aren't currently supported by gecko
2020-12-02 00:32:55 -03:30
bors[bot]
ab3d514677 Merge #1019
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>
2020-12-02 03:03:46 +00:00
Joshua Groves
b278dd2c64 [rs] Specify version for wasm-bindgen-cli 2020-12-01 21:41:46 -03:30
bors[bot]
3c401d2468 [rs] Merge #657
657: Add EGL to docs action r=kvark a=grovesNL

Looks like we need to install EGL for the docs action to match the regular CI action, see https://github.com/gfx-rs/wgpu-rs/runs/1478040907

Co-authored-by: Joshua Groves <josh@joshgroves.com>
2020-12-02 00:54:29 +00:00
Joshua Groves
3fd6320df9 [rs] Add EGL to docs action 2020-12-01 21:18:16 -03:30
Joshua Groves
6ec1d27ac6 [rs] Publish examples to subdirectory 2020-12-01 21:09:53 -03:30
kejor
4513fb2b83 Match upstream API changes for IndexFormat 2020-12-01 19:19:41 -05:00
Dzmitry Malyshau
265c99c1d7 [rs] Create CHANGELOG.md 2020-12-01 09:25:15 -05:00
bors[bot]
8e0ead1b77 [rs] Merge #655
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>
2020-12-01 04:47:39 +00:00
Dzmitry Malyshau
adbf0c719f [rs] Update to gfx from master 2020-11-30 23:45:56 -05:00
bors[bot]
2d87fd9067 Merge #1057
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>
2020-12-01 03:56:44 +00:00
Dzmitry Malyshau
9e2f6c2f01 Move to gfx master 2020-11-30 22:50:13 -05:00
bors[bot]
bc9648a44c [rs] Merge #649
649: Adopt the updated bind group entry API r=kvark a=kvark

Depends on https://github.com/gfx-rs/wgpu/pull/1047

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-12-01 03:45:56 +00:00
Dzmitry Malyshau
c9a718d689 [rs] Adopt the updated bind group entry API 2020-11-30 22:31:31 -05:00
bors[bot]
1eaed5e448 [rs] Merge #654
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>
2020-12-01 02:49:48 +00:00
bors[bot]
623763bf96 Merge #1056
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>
2020-12-01 02:49:15 +00:00
Dzmitry Malyshau
10c11d718d Replace gfx-descriptor by gpu-descriptor 2020-11-30 21:48:04 -05:00
Joshua Groves
80ab100020 [rs] Use web-sys release instead of patch 2020-11-30 22:26:40 -03:30
bors[bot]
67e652f471 Merge #1047
1047: Update bind group layout API to match upstream r=cwfitzgerald a=kvark

**Connections**
Follows https://github.com/gpuweb/gpuweb/pull/1076, https://github.com/gpuweb/gpuweb/pull/1223 (https://github.com/gpuweb/gpuweb/issues/1164), https://github.com/gpuweb/gpuweb/pull/1255, and https://github.com/gpuweb/gpuweb/pull/1256

**Description**
Aligns our API closer to the latest changes in WebGPU upstream. We technically don't have to do this, but I believe in the end it would be best if our API gets close to upstream.

Note: this is a sensitive change for the users, everybody will get their code broken. So please take a look at the API and see if something is missing or needs improvement, so that we don't have to go through the changes again afterwards.

**Testing**
Doesn't really need testing. Partially covered by the existing playtest.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-11-30 22:31:49 +00:00
bors[bot]
2fe96fdab2 [rs] Merge #653
653: Print chosen adapter when running examples r=kvark a=Diggsey



Co-authored-by: Diggory Blake <diggsey@googlemail.com>
2020-11-30 18:41:44 +00:00
Diggory Blake
b046340a57 [rs] Print chosen adapter when running examples 2020-11-30 18:33:51 +00:00
bors[bot]
a1ed4e6d59 [rs] Merge #651
651: Removing gfx-backend-gl on macOS r=grovesNL a=lordnoriyuki

Updating to latest wgpu.
Removing references to gfx-backend-gl on macOS.

Fixes https://github.com/gfx-rs/wgpu-rs/issues/646

Co-authored-by: lordnoriyuki <lordnoriyuki@gmail.com>
2020-11-30 03:11:11 +00:00
lordnoriyuki
7cf9c06d25 [rs] Updating wgpu-rs dependency for backend-gl removal on macOS, including reference in direct.rs 2020-11-29 18:50:27 -08:00
bors[bot]
3efba7712a Merge #1055
1055: Disable gfx-backend-gl on macOS r=kvark a=lordnoriyuki

Resolve the wgpu side of https://github.com/gfx-rs/wgpu-rs/issues/646
wgpu-rs will need two changes:
e59ea495a6/Cargo.toml (L53)
e59ea495a6/src/backend/direct.rs (L69)

Co-authored-by: lordnoriyuki <lordnoriyuki@gmail.com>
2020-11-30 01:36:18 +00:00
lordnoriyuki
e160de87d5 Merge remote-tracking branch 'upstream/master' 2020-11-28 16:13:37 -08:00