Commit Graph

9013 Commits

Author SHA1 Message Date
bors[bot]
7db29bf773 [rs] Merge #395
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>
2020-06-23 12:53:15 +00:00
Connor Fitzgerald
78fa7ba0a6 [rs] Add Tracing 2020-06-22 23:14:29 -04:00
Joshua Groves
7d671389a1 [rs] Make actions more consistent and use GITHUB_TOKEN 2020-06-22 23:23:50 -02:30
bors[bot]
29e286bdc1 Merge #744
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>
2020-06-22 23:52:54 +00:00
Marvin Löbel
962f65ac27 Add backends! and backends_map! macros
to reduce code duplication in instance.rs
2020-06-23 00:41:01 +02:00
bors[bot]
285b31a6a1 Merge #740
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>
2020-06-22 18:25:13 +00:00
Gabriel Majeri
84615eead3 Add support for return value to SPIR-V backend (#79)
* Add test for `glsl_phong_lighting`

* Implement `ReturnValue` op for SPIR-V backend
2020-06-22 16:11:40 +02:00
bors[bot]
63a5f9974e Merge #743
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>
2020-06-22 13:25:25 +00:00
bors[bot]
6947184d55 [rs] Merge #389
389: build master docs r=grovesNL,kvark a=dakom

builds docs and deploys to `doc/` folder on gh_pages branch

doesn't interfere with other gh_pages contents.

assumes `ACCESS_TOKEN` is set as a github secret (if it isn't, please see https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)

see live example on my fork: https://dakom.github.io/wgpu-rs/doc/wgpu/index.html

* closes #379



Co-authored-by: David Komer <david.komer@gmail.com>
2020-06-22 13:23:49 +00:00
Kunal Mohan
73b079f226 Derive Serialize and Deserialize for HostMap 2020-06-22 13:08:17 +05:30
Connor Fitzgerald
62a870280f Refine Logging Levels 2020-06-22 02:13:04 -04:00
bors[bot]
5055ffd408 [rs] Merge #404
404: wgpu update with RODS and memory fixes r=kvark a=kvark

Includes https://github.com/gfx-rs/wgpu/pull/741, https://github.com/gfx-rs/wgpu/pull/745, and https://github.com/gfx-rs/wgpu/pull/746

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-06-22 03:27:47 +00:00
Dzmitry Malyshau
1aee746232 [rs] wgpu update with RODS and memory fixes 2020-06-21 23:25:41 -04:00
bors[bot]
6b3863af62 Merge #745
745: Update to latest gfx-extras commit r=kvark a=rukai

Brings the fix for https://github.com/gfx-rs/wgpu-rs/issues/363 into wgpu

Co-authored-by: Lucas Kent <rubickent@gmail.com>
2020-06-22 03:17:28 +00:00
bors[bot]
e47f734e67 Merge #746
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>
2020-06-22 03:10:47 +00:00
Dzmitry Malyshau
5860649dd0 Fix RODS layout 2020-06-21 23:08:32 -04:00
Lucas Kent
0fa11e7024 Update to latest gfx-extras commit 2020-06-22 10:38:45 +10:00
Dzmitry Malyshau
70054b7693 Relicense under MIT+Apache2 2020-06-21 16:59:16 -04:00
Timo de Kort
9940460fe6 Add basic tests for SPIR-V back-end writer 2020-06-21 15:11:03 -04:00
Connor Fitzgerald
c1f0021a05 Add Chrome Backend 2020-06-20 20:55:59 -04:00
bors[bot]
93a34b538d Merge #741
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>
2020-06-21 00:49:09 +00:00
bors[bot]
60615d68ac [rs] Merge #401 #402
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>
2020-06-21 00:23:05 +00:00
Joshua Groves
8c3778c2b4 [rs] Re-enable auto-deploy from gecko branch 2020-06-20 21:45:20 -02:30
bors[bot]
abd2dae241 [rs] Merge #396
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>
2020-06-20 23:26:00 +00:00
Dzmitry Malyshau
b4941b1939 [rs] Readme updates about the Gecko branch 2020-06-20 19:14:39 -04:00
Dzmitry Malyshau
dcca52a177 [rs] Another refactor of RenderPassDescriptor API 2020-06-20 19:07:06 -04:00
Dzmitry Malyshau
f8d6ab273b [rs] Update wgpu without peek-poke 2020-06-20 17:20:20 -04:00
Connor Fitzgerald
1b2cf3cd22 Add Tracing and Instrument Entry Points 2020-06-20 14:26:50 -04:00
bors[bot]
c7be94047d Merge #739
739: Remove Peek-Poke r=cwfitzgerald a=kvark

**Connections**
Related to https://github.com/gfx-rs/wgpu/issues/738
Related to https://github.com/djg/peek-poke/issues/10

**Description**
As of #726 , the buffers have a minimum binding size that has to include the shader struct size. It, therefore, can't be zero.
We can remove the hacks we had previously and switch fully to the idiomatic `Option<NonZeroU64>`.

Peek-poke doesn't `NonZeroU64` and friends, so this made me reconsider the user of it entirely. Today, render bundles as well as the Player already represent command streams using a much rustier method. I tried to move everything to this method now, and I think this is going to work much better, and safer.

**Testing**
wgpu-rs works - https://github.com/gfx-rs/wgpu-rs/pull/396

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-20 17:52:29 +00:00
Nils Hasenbanck
1f5a55ea13 Fix the default lod_max_clamp value for the SamplerDescriptor
The current default value for the lod_max_clamp of a sampler is 0.
This would deactivate mipmapping alltogether. Setting it 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).
2020-06-20 18:03:51 +02:00
bors[bot]
75d2e47849 Merge #736
736: Validate sampler type in `create_bind_group` r=kvark a=GabrielMajeri

**Connections**
Fixes #588 

**Description**
* Makes `create_bind_group` return a `Result`, and adds a new `binding_model::BindGroupError` enum.
* Converts _some_ assertions from `create_bind_group` into `Err`s
* Validates that the type of sampler declared in the bind group layout (comparison or not) is the same as the one of the actual sampler.

**Testing**
Tested locally on the `shadow` example in `wgpu-rs`. ~Will follow up with a PR in that repo with the updated API.~ https://github.com/gfx-rs/wgpu-rs/pull/398

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-06-20 14:31:32 +00:00
Gabriel Majeri
69b41dc0d3 Validate sampler type in create_bind_group 2020-06-20 17:29:58 +03:00
Dzmitry Malyshau
365f4e8786 Remove peek-poke.
There was a lot of highly unsafe use of serialization based on peek-poke that we
weren't entirely happy with. It's replaced by just serializing the passes now.
Also, switch BufferSize to Option<NonZero>.
2020-06-20 00:39:11 -04:00
bors[bot]
c8a1734044 Merge #737
737: Naga update with offsets and strides r=kvark a=kvark

**Connections**
Successor to #692
Updates Naga for API in https://github.com/gfx-rs/naga/pull/77

**Description**
Building with rust nightly and latest Naga

**Testing**
Ran wgpu-rs examples

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-19 19:58:52 +00:00
Dzmitry Malyshau
0c0ecc3b09 Switch to latest nightly 2020-06-19 11:16:29 -04:00
Dzmitry Malyshau
ff5c9c9ffc Naga update with offsets and strides 2020-06-19 11:14:29 -04:00
bors[bot]
d7d0fd5dfe Merge #735
735: Set descriptor set name when creating bind group r=kvark a=GabrielMajeri

**Description**
There is a [`TODO` in the code](a02a566841/wgpu-core/src/device/mod.rs (L1428)) for setting the descriptor set name when creating a bind group. It was blocked on https://github.com/gfx-rs/gfx-extras/pull/5

**Testing**
Tested with examples from `wgpu-rs`.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-06-19 13:33:32 +00:00
Dzmitry Malyshau
a9228d2aed Add member offsets and array strides 2020-06-19 08:45:04 -04:00
Gabriel Majeri
eba5c7e877 Set descriptor set name when creating bind group 2020-06-19 15:20:01 +03:00
bors[bot]
15fb850842 [rs] Merge #385
385: Move `backends: BackendBit` parameter to `Instance::new()` r=kvark a=Kimundi

Fixes #337
Blocked on https://github.com/gfx-rs/wgpu/pull/730.


Co-authored-by: Marvin Löbel <loebel.marvin@gmail.com>
2020-06-19 00:13:30 +00:00
Timo de Kort
eb559c5b32 Add GLSL construction status 2020-06-18 20:10:37 -04:00
Marvin Löbel
3404a12b76 [rs] Move backends: BackendBit paramter to Instance::new() 2020-06-19 01:25:38 +02:00
Timo de Kort
0a781f4ce7 Add Layout Tests
Add Physical Layout test

Add Instruction tests

Add Logical Layout test
2020-06-18 17:19:36 -04:00
bors[bot]
a02a566841 Merge #730
730: Move backend selection to `Instance::new()` r=kvark a=Kimundi

**Connections**
Addresses https://github.com/gfx-rs/wgpu-rs/issues/337
Corresponding wgpu-rs PR: https://github.com/gfx-rs/wgpu-rs/pull/385

**Description**
This makes early backend selection possible in `Instance::new`, by only attempting to instantiate requested backends. The actual selection in `pick_adapter()` (necessarily) remains unchanged, and can be used to further restrict the request.

**Testing**
Unsure what to do here
<!--
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: Marvin Löbel <loebel.marvin@gmail.com>
2020-06-18 20:39:52 +00:00
Marvin Löbel
e88e3517d6 Move backend selection to Instance::new()
Keep `inputs` parameter in `pick_adapter()`
2020-06-18 22:04:16 +02:00
bors[bot]
b4410c5d8a Merge #732
732: Dummy workspace crate r=cwfitzgerald a=kvark

Basically, it makes sure that doing `cargo check` locally in the workspace is all you need.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-18 19:11:53 +00:00
Dzmitry Malyshau
0cd1ec2981 Dummy workspace crate 2020-06-18 14:16:04 -04:00
bors[bot]
581d725856 [rs] Merge #391
391: Change `include_spirv` macro to accept tokens r=cwfitzgerald a=neachdainn

The `include_spirv` macros was set to accept literals only. Unfortunately, this means that other macros, such as `concat` and `env` aren't accepted, making it unusable with build script-compiled shaders. This change allows those macros to be used to load the SpirV at the expense of a potentially less helpful error message as the `literal` requirement is differed to the `include_bytes` invocation.

Co-authored-by: Nathan Kent <nkent2@cs.rochester.edu>
2020-06-18 18:09:00 +00:00
Nathan Kent
b2eca13fcc [rs] Change SpirV macro from expr to tt
As suggested in the pull request.
2020-06-18 13:56:48 -04:00
Nathan Kent
c0a97b6224 [rs] Allow concat in SpirV macro
The `include_spirv` macros was set to accept literals only.
Unfortunately, this means that other macros, such as `concat` and `env`
aren't accepted, making it unusable with build script-compiled shaders.
This change allows those macros to be used to load the SpirV at the
expense of a potentially less helpful error message as the `literal`
requirement is differed to the `include_bytes` invocation.
2020-06-18 13:47:29 -04:00