Commit Graph

9013 Commits

Author SHA1 Message Date
Lachlan Sneff
466cd1b728 Serialize and Deserialize Module (#125)
* Add serialize and deserialize features with examples

* Fix formatting

* Make some types (de)serialize transparently

* Fix more formatting

* Remove new examples and add (de)serialization support to the convert example

* Remove extraneous file

* Rename param file
2020-08-13 12:27:10 -04:00
bors[bot]
92aaa2bba6 Merge #875
875: Add labels to pipelines r=trivial a=kvark

This isn't functional until gfx-hal-0.6 is published, but the API is there.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-13 16:16:17 +00:00
Dzmitry Malyshau
d8341c5996 Add labels to pipelines 2020-08-13 12:14:24 -04:00
bors[bot]
26ce126582 [rs] Merge #503
503: Update for the wgpu grand refactor r=kvark a=kvark

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

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-13 04:27:09 +00:00
Dzmitry Malyshau
5c5483a25e [rs] Update for the wgpu grand refactor 2020-08-13 00:26:40 -04:00
bors[bot]
6e3e88dd10 Merge #873
873: Grand cleanup and refactor of the descriptors in the API r=cwfitzgerald,grovesNL a=kvark

**Connections**
Cleanup follows https://github.com/gfx-rs/wgpu-rs/pull/501
Fixes #871 
Fixes #848

**Description**
There is a lot of small and big things crumbled in here.

The major one is where descriptors live, and how they are parametrized. Logic is the following:
  - if something is useful by wgpu-rs's API leave it in `wgpu-types`
  - if *in addition* it's useful to `wgpu-native`(i.e. has `repr(C)`),  we possibly parametrize it (currently, only label is).
  - otherwise, the type is moved to `wgpu-core` and stripped of generics
  - remove all the builders

Some medium-sized things:
  - moves the subscriber out (#871)
  - moves the `RenderCommand` into the `draw` module (which is meant to contain shared things)
  - makes `TextureViewDescriptor` fields optional, but receives it directly now (#848)
  - moves stencil stuff out into `StencilStateDescriptor`, so that we can derive `Default` for it
  - stop accepting raw strings for labels in the `Device` API: neither the clients, or gfx-rs need that shape, and it can't be safe

Some smaller things:
  - using NonZeroU8 for anisotropy
  - using NonZeroU32 for descriptor count
  - putting sampler addressing modes into an array
  - add labels to command buffers and pipeline layouts
  - improves errors for exceeding binding limits

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


Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-13 03:19:44 +00:00
Dzmitry Malyshau
2473c25971 Refactor the stencil state descriptor a bit 2020-08-12 20:04:47 -04:00
Dzmitry Malyshau
d07d8503a0 Move the subscriber into a different crate 2020-08-12 15:00:15 -04:00
Dzmitry Malyshau
a0711cf9b2 Move the RenderCommand into the shared draw module 2020-08-12 14:33:42 -04:00
Dzmitry Malyshau
9d8dc0b04d Grand cleanup and refactor of the descriptors in the API 2020-08-12 14:13:32 -04:00
bors[bot]
ecb91664e6 [rs] Merge #501
501: Fighting back the bovine forces r=kvark a=Kimundi

<img src="https://dcassetcdn.com/w1k/submissions/399000/399327_d0ba.jpg" width="300">
"Good work boys, we'll get 'em next time!"

Co-authored-by: Marvin Löbel <loebel.marvin@gmail.com>
2020-08-12 14:31:00 +00:00
Marvin Löbel
40ded76554 [rs] Udderly remove cows from the following APIs:
- BufferDescriptor
- CommandEncoderDescriptor
- RenderBundleDescriptor
- TextureDescriptor
- TextureViewDescriptor
- PipelineLayoutDescriptor
- SamplerDescriptor
- BindGroupDescriptor
- ProgrammableStageDescriptor
- RenderPassDescriptor
- RenderPipelineDescriptor
- BindGroupLayoutDescriptor
- VertexStateDescriptor
- VertexBufferDescriptor
- RenderBundleEncoderDescriptor
- ComputePipelineDescriptor

Also change anisotropy_clamp to use NonZeroU8
2020-08-12 10:21:38 +02:00
João Capucho
a16204456e WIP: glsl 450 backend and common glsl module (#123)
* Initial backend implementation

* Refractored glsl450 backend to have a common module between further glsl backends
Implemented more missing functionality

* Error handling

* Implemented most of the suggestions

* Addresed all comments
Fixed some bugs

* Made code style consistent
2020-08-11 16:20:23 -04:00
bors[bot]
5805a4b3e2 [rs] Merge #502
502: Expose get_bind_group_layout r=grovesNL a=kvark

Returning a new object is fine for BGLs specifically and for these cases in particular because we made sure the refcount is bumped (and BGL has a special kind of refcount) in f164fd1f46

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-11 12:39:23 +00:00
Dzmitry Malyshau
30f93e6f8d [rs] Expose get_bind_group_layout 2020-08-11 00:36:32 -04:00
bors[bot]
041c5dea77 [rs] Merge #500
500: Update wgpu for optional layouts r=3rdtimeisthecharm a=kvark

Fixes #498
Includes https://github.com/gfx-rs/wgpu/pull/872 and https://github.com/gfx-rs/wgpu/pull/870

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-08-10 21:54:18 +00:00
Dzmitry Malyshau
de41bac69b [rs] Update wgpu for optional layouts 2020-08-10 16:42:52 -04:00
bors[bot]
04f5cfd1c8 Merge #872
872: Respect texture view aspect on creation r=cwfitzgerald a=kvark

**Connections**
Fixing https://github.com/gfx-rs/wgpu-rs/issues/498 (but needs wgpu-rs update then)

**Description**
We added the aspect field to texture view descriptor but didn't respect it properly.
We do that now, and also disallow Depth-Stencil sampled views

**Testing**
Used the modified water example for testing.

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-08-10 20:16:45 +00:00
Dzmitry Malyshau
1f5622a0b3 Respect texture view aspect on creation 2020-08-10 16:14:20 -04:00
bors[bot]
12352035f0 Merge #870
870: Implicit layout r=cwfitzgerald a=kvark

**Connections**
Closes #868

**Description**
The implementation can be split into 3 parts:
  1. reflecting the shader for binding expectations, and building a bind entry map from it, merging them between stages. This is only done for shaders that can be reflected, and we error on the rest, for now.
  2. based on this info, create new bind group layouts and pipeline layouts. The tricky part here is that we can't generate the ID out of thin air, so we have to pass them into the `create_xx_pipeline` function, which now also returns the number of IDs it consumed, allowing the client to free the rest.
  3. API changes in the descriptors, new methods to obtain the bind group layouts from a pipeline

**Testing**
This isn't tested, but I think it's fine: it doesn't affect the old path, and we'll be testing the new path while improving Naga and our reflection anyway.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-10 18:38:34 +00:00
Pelle Johnsen
b96b7449db [gls-new] handle local vars 2020-08-10 10:57:31 -04:00
Pelle Johnsen
41c1c713dc [glsl-new] handle global vars in external_decl 2020-08-10 10:57:31 -04:00
Dzmitry Malyshau
f164fd1f46 Bump BGL refcounts on getting them from pipelines 2020-08-10 10:11:31 -04:00
Dzmitry Malyshau
55064ace4c New get_bind_group_layout functions 2020-08-09 18:33:47 -04:00
Dzmitry Malyshau
d8efe3b6fe Attempt to unite implicit layout code between compute and render 2020-08-09 18:16:03 -04:00
Dzmitry Malyshau
173c7c3dbf Create implicit layouts for render pipelines 2020-08-09 14:43:44 -04:00
Pelle Johnsen
ede04ba4dc [glsl-new] Simplify declaration code
- Fix clippy issues
2020-08-09 10:57:41 -04:00
Pelle Johnsen
482c6d042d [glsl.new] Add initial declaration support
Focus on handling global in/out vars
2020-08-09 10:57:41 -04:00
Pelle Johnsen
f98054afdd [glsl-new] add vec2 and vec3 2020-08-09 10:57:41 -04:00
Timo de Kort
6db5b373f8 Add support for other matrices keywords (#121)
Add mat2x3, mat2x4, mat3x2, mat3x4, mat4x2, and mat4x3 keywords
2020-08-09 09:32:22 -04:00
Dzmitry Malyshau
a9b8a99e19 Create implicit layouts for compute pipelines 2020-08-09 08:33:33 -04:00
Dzmitry Malyshau
f18fa7ef9b Derive bind group layout entries in Naga validation 2020-08-08 01:09:41 -04:00
bors[bot]
430b29d781 Merge #866
866: Streghten the multi-ref-count on BGLs r=cwfitzgerald a=kvark

**Connections**
Fixes #834

**Description**
Bind group layouts (BGLs) have to be somewhat uniquely tracked, and there was a synchronization issue with their use of `MultiRefCount`. What would happen in multi-thread environment is that we'd see `bind_group_layout_drop`, which first decreases the refcount, and then adds the ID to the list of suspected resources for deletion. But between these operations, something else may have triggered the triage of suspected resources, and if BGL was already there previously, it would be removed earlier than expected.

The solution I came up with is deferring the "dec()" call until the triage itself. That guarantees no gaps, and in fact it goes in line with the other resources we are tracking. I'm fairly confident that the new method works correctly at all times.

**Testing**
Tested extensively on https://github.com/gfx-rs/wgpu/issues/834#issuecomment-669362572

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-05 21:46:20 +00:00
Dzmitry Malyshau
8731da278e Streghten the multi-ref-count on BGLs 2020-08-05 17:39:25 -04:00
bors[bot]
5d85f591e9 [rs] Merge #496
496: Replace u32 with NonZeroU32 in TextureView r=kvark a=kunalmohan

Includes https://github.com/gfx-rs/wgpu/pull/865

Co-authored-by: Kunal Mohan <kunalmohan99@gmail.com>
2020-08-05 17:45:46 +00:00
Kunal Mohan
f9ab713d0e [rs] Replace u32 with NonZeroU32 in TextureView 2020-08-05 22:54:41 +05:30
bors[bot]
8057acf120 Merge #865
865: Replace u32 with NonZeroU32 in TextureView 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._
We now expose separate methods under `Global` to register error/invalid resources. So the check for `mip_level_count = 0` and `array_layer_count = 0` can be made on the client-side in Servo, and directly register an error resource instead of trying to create a real one.

**Testing**
_Explain how this change is tested._
Not yet tested. Will be done wgpu-rs examples.
<!--
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-08-05 17:10:47 +00:00
Kunal Mohan
aa44969818 Replace u32 with NonZeroU32 in TextureView 2020-08-05 21:23:25 +05:30
bors[bot]
fc14f3d21d Merge #864
864: Remove `power` module r=kvark a=GabrielMajeri

**Connections**
Closes #859 

**Description**
Removes the `power.rs` module. If the user wants to detect the battery status and choose between low-power and high-performance, they can do so themselves.

**Testing**
Tested with core.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2020-08-05 13:46:34 +00:00
Pelle Johnsen
745ef6a6d6 [glsl-new] Add float consts (#119) 2020-08-05 09:45:42 -04:00
Gabriel Majeri
021251a908 Remove power module 2020-08-05 16:27:41 +03:00
bors[bot]
768c606844 [rs] Merge #494
494: Update wgpu with the error model changes r=cwfitzgerald a=kvark

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

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-05 00:00:21 +00:00
Dzmitry Malyshau
6832ad1513 [rs] Update wgpu with the error model changes 2020-08-04 17:09:21 -04:00
bors[bot]
78546f410d Merge #857
857: Separate valid internal IDs from external ones r=cwfitzgerald a=kvark

**Connections**
Closes #638 
wgpu-rs update - https://github.com/gfx-rs/wgpu-rs/pull/494

**Description**
The core change here is to allow user-specified IDs to be in the "Error" state that was introduced in #776 .

This is done by defining an internal `Valid<I>` wrapper. Now, the hub storages can be indexed by this valid wrapper only. For regular IDs, we have to go through `storage.get(index)`, which returns a `Result`. It still panics if the ID is totally garbage though, we don't want to handle what can't be expected here.

All the other changes come mostly as a consequence of that:
  - new "Invalid*" error variants are added
  - the error types are undergone sever refactoring
  - new `command/draw.rs` module for stuff shared between render passes and bundles
  - functions to generate error IDs for all the types
  - various renames, e.g. `comb` -> `cmd_buf`

The expected use by wgpu-rs is unchanged. So far, I don't think we'd be generating Error IDs, but we can always reconsider.
For browsers though, if `device_create_xxx` failed, they would generate and error ID. It will occupy the slot up until the corresponding JS object is dropped.

**Testing**
Tested on wgpu-rs examples

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-08-04 20:51:11 +00:00
Pelle Johnsen
747535906f [glsl-new] Add ExpressionRule for expr/stmts (#118)
- Initial work for handling expressions that also generates statements
2020-08-04 15:45:55 -04:00
Dzmitry Malyshau
dbd7e2c579 Separate valid internal IDs from external ones 2020-08-04 11:16:59 -04:00
bors[bot]
5d35936d5c Merge #856
856: Implementation of the builder pattern r=kvark a=Andful

**Connections**
This pull request addresses the issue #851 

**Description**
Add a builder for wgpu types.

**Testing**
TODO
<!--
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: Andrea Nardi <buongiorno19972@gmail.com>
2020-08-02 03:51:58 +00:00
Andrea Nardi
acfbbb42b5 Implementation of the builder pattern
Signed-off-by: Andrea Nardi <buongiorno19972@gmail.com>
2020-08-02 05:49:10 +02:00
bors[bot]
d846081d36 [rs] Merge #495
495: Update a documentation to refer to create_buffer_init() instead of create_buffer_with_data() r=kvark a=yutannihilation

A followup of #482

Co-authored-by: Hiroaki Yutani <yutani.ini@gmail.com>
2020-08-02 00:26:48 +00:00
Hiroaki Yutani
3c823e24c0 [rs] Update a doc's reference to create_buffer_init() 2020-08-01 17:57:13 +09:00