Commit Graph

2761 Commits

Author SHA1 Message Date
bors[bot]
a568ae07b8 [rs] Merge #413
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>
2020-06-27 18:26:24 +00:00
Gabriel Majeri
f0f481bbda [rs] Improve hello-triangle docs 2020-06-27 21:25:22 +03:00
Gabriel Majeri
e2d072fb59 [rs] Improve crate docs 2020-06-27 21:25:19 +03:00
bors[bot]
2547c43307 Merge #753
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>
2020-06-27 17:01:20 +00:00
Dzmitry Malyshau
925010d117 Revise the atomic ordering on refcounts 2020-06-27 13:00:12 -04:00
Dzmitry Malyshau
e3280aa643 Deduplicate BindGroupLayout by value 2020-06-27 11:13:18 -04:00
bors[bot]
13211508ba [rs] Merge #412
412: Convert Extensions + Capabilities into Features r=kvark a=cwfitzgerald

https://github.com/gfx-rs/wgpu/pull/751 but rusty.

Nothing much more to say about it, pretty banal.

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-06-26 13:51:01 +00:00
Connor Fitzgerald
cd4baab400 [rs] Convert Extensions + Capabilities into Features 2020-06-26 01:27:57 -04:00
bors[bot]
3b6e128877 Merge #752
752: gfx-memory update r=trivial a=kvark

**Connections**
Switches gfx-extras to https://github.com/gfx-rs/gfx-extras/pull/18
Fixes #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>
2020-06-26 05:16:53 +00:00
Dzmitry Malyshau
448ecc1bb1 gfx-memory update 2020-06-26 01:12:58 -04:00
bors[bot]
b23b9eed16 Merge #751
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>
2020-06-26 05:11:16 +00:00
Connor Fitzgerald
ac62a11619 Convert Extensions + Capabilities into Features 2020-06-26 00:18:46 -04:00
bors[bot]
d73d471085 [rs] Merge #408
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>
2020-06-25 17:44:04 +00:00
kyren
aae1f216e0 [rs] A different attempt at the example framework 2020-06-25 13:13:13 -04:00
kyren
6fb12c0537 [rs] Get event loop + futures working on native, untested on web 2020-06-25 13:13:13 -04:00
bors[bot]
4164c6af6e Merge #748
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>
2020-06-24 15:39:04 +00:00
bors[bot]
81a7ba6267 [rs] Merge #400
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>
2020-06-24 14:46:52 +00:00
bors[bot]
177a0b39ac Merge #747
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>
2020-06-24 14:39:00 +00:00
bors[bot]
2d5e032b62 Merge #749
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>
2020-06-24 14:29:58 +00:00
Dzmitry Malyshau
0ed90d001b Tweak the logging a bit to make debug level usable 2020-06-24 10:26:43 -04:00
Rukai
8137934739 Allow intra doc link resolution failures, because they actually succeed when they need to but rust doesnt know 2020-06-24 22:20:22 +10:00
Kunal Mohan
421aa79364 Custom implement Debug for RenderPass and ComputePass 2020-06-24 10:55:46 +05:30
Dzmitry Malyshau
f042b4a7e9 [rs] Refactor examples API, improve belt documentation and logic 2020-06-23 23:51:47 -04:00
Dzmitry Malyshau
3397750c4d [rs] Staging belt, use LocalSpawner for the framework 2020-06-23 23:15:47 -04:00
Brian
6b4ee0d6d0 [rs] added test to validate that the capture example's png matches the screenshot.png that is in there
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
2020-06-23 20:24:48 -04:00
bors[bot]
24dbd6ab9e [rs] Merge #407
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>
2020-06-23 13:22:24 +00:00
Connor Fitzgerald
355c7662dd [rs] Build Docs with Nightly 2020-06-23 09:19:40 -04:00
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
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
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