Commit Graph

2761 Commits

Author SHA1 Message Date
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
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
Marvin Löbel
3404a12b76 [rs] Move backends: BackendBit paramter to Instance::new() 2020-06-19 01:25:38 +02: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
bors[bot]
8e9d4778cd [rs] Merge #390
390: Example feature matrix r=cwfitzgerald a=kvark

This PR introduces a feature matrix to show what feature can be found in which example. I expect we'll be linking to it a lot :)

It also renames the `describe` example so that we can distinguish easily between ones that are framework-based and standalone ones (starting with "hello").

Concerns:
- the star may be a bit too bleak... I haven't found a better one that would be short to type (choosing a long one means editing is uncomfortable).
- sometimes hard to figure out what deserves a feature in the table and what not... still a win to have at least something here
- we need to do something with `capture`, see #387, but I haven't figured out what exactly

also r? @rukai 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-18 17:16:42 +00:00
Dzmitry Malyshau
d121c7237e [rs] Example feature matrix 2020-06-18 13:15:41 -04:00
David Komer
ffd2ffbf45 [rs] build master docs
Deploys to gh_pages branch in `doc/` folder

* closes #379
2020-06-18 19:22:25 +03:00
bors[bot]
8bceed45a8 [rs] Merge #380
380: Documentation Pass r=kvark a=cwfitzgerald

The wgpu-rs component of https://github.com/gfx-rs/wgpu/pull/728.

Closes #378.

Notable changes not mentioned in wgpu PR:
- Reexported the wgt-local types whenever we have a type definition. These are reexported as `ThingBase`. This is unfortunately the only way to actually get their documentation to show up, aliases have no way of "inheriting" the documentation.
- Added wgpu logo to docs!
- Hid vertex_format_size macro.

Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-06-18 15:11:00 +00:00
Connor Fitzgerald
63c8a60185 [rs] wgpu-rs documentation pass 2020-06-18 11:10:18 -04:00
bors[bot]
584468e34b Merge #728
728: Documentation Pass r=kvark a=cwfitzgerald

## Connections

https://github.com/gfx-rs/wgpu-rs/issues/378.

## Description

The number one thing that people want to see in wgpu is better documentation, so this is a first step towards that goal. It unifies the documentation and fills it out so most things have documentation that is at least marginally helpful.

Notable changes to existing documentation:
- Removes "a" and "the" at the beginning of short descriptions.
- Always use the phrasing `Describes a...` for descriptors that create objects directly.
- Always use a period at the end of short descriptions.

## Testing

No code was changed, but constant monitoring of cargo doc output in wgpu-rs was used to keep everything completely consistent.

## TODO

- [x] wgpu-rs PR (https://github.com/gfx-rs/wgpu-rs/pull/380)


Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
2020-06-18 13:04:42 +00:00
bors[bot]
32f7dd744a [rs] Merge #384
384: Add include_spirv macro r=cwfitzgerald,rukai a=kvark

Depends on https://github.com/gfx-rs/wgpu/pull/729
Makes out shader loading in the examples a bit tidier.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-18 05:05:41 +00:00
Dzmitry Malyshau
c97a859387 [rs] Add include_spirv macro 2020-06-18 01:04:42 -04:00
bors[bot]
6bca38feed Merge #729
729: Basic support for WGSL r=cwfitzgerald a=kvark

Connections:
- https://github.com/gfx-rs/wgpu-rs/pull/384

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-18 01:25:42 +00:00
Connor Fitzgerald
15d0db8828 wgpu-types documentation pass 2020-06-17 20:38:44 -04:00
Dzmitry Malyshau
35a1dc3076 Basic support for WGSL 2020-06-17 13:29:43 -04:00
bors[bot]
2369c74c99 [rs] Merge #382
382: Remove interface blocks from the water shaders r=kvark a=kvark

Fixes https://github.com/gfx-rs/gfx/issues/3274

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-17 15:04:08 +00:00
Dzmitry Malyshau
9cd109e67c [rs] Remove interface blocks from the water shaders 2020-06-17 11:03:02 -04:00
bors[bot]
0d807b7d26 [rs] Merge #374
374: Add debug markers and debug markers example r=kvark a=krupitskas

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

Co-authored-by: Nikita Krupitskas <krupitskas@icloud.com>
2020-06-17 13:54:00 +00:00
bors[bot]
fa5b6bd6d7 [rs] Merge #377
377: Update with minBufferBindingSize r=cwfitzgerald a=kvark

Depends on https://github.com/gfx-rs/wgpu/pull/726
Also reverts #373 : buffer bindings now have to include at least one element of an unsized struct portion, so they can't be zero-sized.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-17 04:19:47 +00:00
Dzmitry Malyshau
24a4faf065 [rs] Update with minBufferBindingSize 2020-06-17 00:13:47 -04:00
bors[bot]
fc2dd481b2 Merge #726
726: Basic support for minBufferBindingSize r=cwfitzgerald a=kvark

**Connections**
Has basic (partial) implementation of https://github.com/gpuweb/gpuweb/pull/678
wgpu-rs update - https://github.com/gfx-rs/wgpu-rs/pull/377

**Description**
This change allows users to optionally specify the expected minimum binding size for buffers. We are then validating this against both the pipelines and bind groups.
If it's not provided, we'll need to validate at draw time - this PR doesn't do this (focus on API changes first).
It also moves out the `read_spirv`, since wgpu-types wasn't the right home for it ever.

**Testing**
Tested on wgpu-rs examples

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-06-17 03:25:27 +00:00
bors[bot]
4043a10fbc [rs] Merge #375
375: Add water example.  r=kvark,cwfitzgerald a=OptimisticPeach

Solves #329, water example requested by @kvark.

I tuned it to my personal preference of visuals, however it might be different for you. 

Note: I used https://github.com/ashima/webgl-noise for 3D open simplex noise.

I've commented to explain what most of the things in the rust side of the example mean. However, I'm not 100% sure I did the best job at giving a brief overview, and wouldn't mind someone making sure my terminology/definitions are correct. 

Thanks!
Patrik

Co-authored-by: OptimisticPeach <patrikbuhring@yahoo.com>
2020-06-17 02:02:43 +00:00
bors[bot]
9e699330a8 Merge #719
719: Implement debug marker support r=kvark a=krupitskas

**Connections**
Closes https://github.com/gfx-rs/wgpu/issues/697

**Description**
Looks like because I've once pushed forward reset branch to my master, previous pull request https://github.com/gfx-rs/wgpu/pull/713
show that there no commits and it automatically was closed :/

**Testing**
Not tested yet


Co-authored-by: Nikita Krupitskas <krupitskas@icloud.com>
2020-06-16 21:34:27 +00:00
Nikita Krupitskas
eaf2acb43a Implement debug marker support 2020-06-17 00:05:52 +03:00
bors[bot]
5853fb9557 Merge #727
727: Update gfx-memory to the latest commit r=kvark a=rukai

**Description**
In order to test potential fixes for https://github.com/gfx-rs/wgpu-rs/issues/363 we need wgpu master to be able to easily test changes to gfx-memory.

Assuming we dont have any large regressions I think it could be nice to release wgpu 0.6 before merging this. I dont mind either way though.

**Testing**
I ran some wgpu-rs examples.


Co-authored-by: Rukai <rubickent@gmail.com>
2020-06-16 14:11:28 +00:00
Rukai
71ee7d868a Update gfx-memory to the latest commit 2020-06-16 23:32:35 +10:00
Nikita Krupitskas
6a0a4d6c9d [rs] Add debug markers and debug markers example 2020-06-16 11:13:03 +03:00
OptimisticPeach
2ad472538c [rs] Add water example 2020-06-16 02:33:14 -04:00
Dzmitry Malyshau
a27341bd6d Basic support for minBufferBindingSize 2020-06-16 00:34:58 -04:00
bors[bot]
6fa9f46fbc [rs] Merge #376
376: Revert "API update for RODS2" r=kvark a=kvark

This reverts commit edb3610530.
It also update `wgpu` dependency to https://github.com/gfx-rs/wgpu/pull/723

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-06-15 22:17:32 +00:00
Dzmitry Malyshau
06f4c122c6 [rs] Revert "API update for RODS2"
This reverts commit edb3610530.
2020-06-15 18:16:14 -04:00
bors[bot]
d1deae5747 Merge #723
723: Always use DepthStencilReadOnlyOptimal for sampled depth r=kvark a=kvark

**Connections**
This is a follow-up to #712  that reverts the API changes but also fixes our internal logic to work better.

**Description**
It solves the problem of image layouts by always using a RODS layout on depth images, when sampled.

**Testing**
Tested on https://github.com/gfx-rs/wgpu-rs/pull/375


Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-06-15 21:45:51 +00:00
Dzmitry Malyshau
58de765961 Always use DepthStencilReadOnlyOptimal for sampled depth 2020-06-15 17:45:19 -04:00