Commit Graph

61 Commits

Author SHA1 Message Date
Dzmitry Malyshau
04c52e8bb4 Bug 1696066 - Serialize Queue write commands with Rust r=jgilbert
Based on https://phabricator.services.mozilla.com/D107013
Refactors our Queue write commands to use less of WebGPUSerialize.h
Also routes the errors from all queue operations properly to the client.

Differential Revision: https://phabricator.services.mozilla.com/D107162
2021-03-05 00:07:24 +00:00
Dzmitry Malyshau
6a98d01bc6 Bug 1622846 - Update WebGPU API with wgpu r=jgilbert,webidl,smaug
This is another WebGPU API update, it picks up a lot of changes that were made recently:
  - new bind group layout
  - new render pipeline descriptor
  - new vertex formats
  - limits
  - compressed texture formats
  - index format
  - query sets
  - and more small ones!

It also brings in the updated `gfx/wgpu` to support these API changes.

Differential Revision: https://phabricator.services.mozilla.com/D107013
2021-03-04 21:25:46 +00:00
Brindusan Cristian
b68b70b031 Backed out changeset 0c0c723b0a0e (bug 1622846) for build bustages in Device.h. CLOSED TREE 2021-03-04 22:02:58 +02:00
Dzmitry Malyshau
9961346482 Bug 1622846 - Update WebGPU API with wgpu r=jgilbert,webidl,smaug
This is another WebGPU API update, it picks up a lot of changes that were made recently:
  - new bind group layout
  - new render pipeline descriptor
  - new vertex formats
  - limits
  - compressed texture formats
  - index format
  - query sets
  - and more small ones!

It also brings in the updated `gfx/wgpu` to support these API changes.

Differential Revision: https://phabricator.services.mozilla.com/D107013
2021-03-04 17:48:28 +00:00
Dzmitry Malyshau
e07cb20450 Bug 1693329 - Update WebGPU code to use the new drop IPC r=jgilbert
Instead of having a separate IPC message type for every kind of object ID freeing,
we are encoding this into Rust enums and passing under the same DropAction.
This saves a bunch of lines of code, and allows us to free IDs in bulk where we need it.

Differential Revision: https://phabricator.services.mozilla.com/D105492
2021-03-02 20:11:31 +00:00
Dzmitry Malyshau
9b6664ab00 Bug 1680376 - WebGPU error handling infrastructure r=jgilbert,webidl,smaug
the goal of this PR is to provide the necessary
infrastructure to handle errors on the GPU process side and send them
back to the client side, triggering the uncaptured error events.

Differential Revision: https://phabricator.services.mozilla.com/D98542
2020-12-18 20:07:47 +00:00
Dzmitry Malyshau
73e4206b47 Bug 1655357 - Disable use of external textures on macOS in WebGPU r=aosmond
The external texture we create in WebGPU to present the canvas was taking
a different path on macOS with specific resolutions:
https://searchfox.org/mozilla-central/rev/85b84f82489451362a351b144fe5232a8e46c61c/gfx/layers/composite/TextureHost.cpp#590

Differential Revision: https://phabricator.services.mozilla.com/D97927
2020-11-24 19:43:31 +00:00
Dzmitry Malyshau
33753aa77a Bug 1676916 - Implicit bind group layouts in WebGPU r=jgilbert,webidl,smaug
This change updates and enables Naga to get the
SPIRV shaders parsed, validated, and reflected back into
implicit bind group layouts.
WebGPU examples heavily rely on the implicit layouts now,
and the PR also updates the WebIDL to make that possible.
With the change, we are able to run most of the examples again!

Differential Revision: https://phabricator.services.mozilla.com/D96850
2020-11-13 14:15:49 +00:00
Dzmitry Malyshau
8e91b80c2b Bug 1622846 - Serialize WebGPU descriptors via Serde for IPC r=jgilbert,webidl,smaug
This PR updates wgpu to the latest and changes the way we pass object descriptors to the GPU process.
Instead of trying to convert them between DOM-CPP-IPDL-FFI-Rust, we now do DOM-FFI-Rust
and serialize them by serde into ipc::ByteBuf objects.

Differential Revision: https://phabricator.services.mozilla.com/D94908
2020-11-07 02:43:09 +00:00
Csoregi Natalia
3d12e4746f Backed out changeset bdd3d7eb5927 (bug 1622846) for linux bustage on gfx/wgpu/wgpu-types/src/lib.rs. CLOSED TREE 2020-11-07 00:48:50 +02:00
Dzmitry Malyshau
16116bbed5 Bug 1622846 - Serialize WebGPU descriptors via Serde for IPC r=jgilbert,webidl,smaug
This PR updates wgpu to the latest and changes the way we pass object descriptors to the GPU process.
Instead of trying to convert them between DOM-CPP-IPDL-FFI-Rust, we now do DOM-FFI-Rust
and serialize them by serde into ipc::ByteBuf objects.

Differential Revision: https://phabricator.services.mozilla.com/D94908
2020-11-06 18:59:27 +00:00
Dzmitry Malyshau
1b6df1aa93 Bug 1622846 - WebGPU new mapping API r=webidl,jgilbert,smaug
This PR updates wgpu to 64ae59072d
It has a number of things (API updates, correctness fixes, etc), but the biggest part is the new mapping API.

Differential Revision: https://phabricator.services.mozilla.com/D92636
2020-10-19 17:19:12 +00:00
Dorel Luca
5a15b544ed Backed out changeset 13bb2d007f1f (bug 1622846) for Build bustage on android. CLOSED TREE 2020-10-19 19:28:27 +03:00
Dzmitry Malyshau
d8b940eb87 Bug 1622846 - WebGPU new mapping API r=webidl,jgilbert,smaug
This PR updates wgpu to 64ae59072d
It has a number of things (API updates, correctness fixes, etc), but the biggest part is the new mapping API.

Differential Revision: https://phabricator.services.mozilla.com/D92636
2020-10-19 15:08:55 +00:00
Dzmitry Malyshau
c63b19278d Bug 1653161 - Implement Queue.writeBuffer and writeTexture in WebGPU r=jgilbert,webidl,smaug
Updates wgpu to bd50867bb8c66ac9dec50046d066c02b8f7a3fc1

Differential Revision: https://phabricator.services.mozilla.com/D83734
2020-07-28 22:26:21 +00:00
Dzmitry Malyshau
5aa4dd9c8f Bug 1634425 - Integrate WebGPU API tracing r=jgilbert
This is the logic of tracing the WebGPU API calls at the level of wgpu-core,
serialized into a folder of choosing on the user drive. Traces are extremely portable,
they can be shared (on BugZilla) and then replayed on the developer machine,
which can have a different architecture from the users machine.

The standalone player is introduced in `gfx/wgpu/player`, similar to WebRender's Wrench.

The output dir is controlled by "dom.webgpu.traceDir" pref. No tracing happens if it's empty.

Differential Revision: https://phabricator.services.mozilla.com/D73333
2020-05-27 16:49:03 +00:00
Bogdan Tara
3baa2a9385 Backed out changeset f4ed4d3e0e9e (bug 1634425) for hazard failure on WebGPUParent.cpp CLOSED TREE 2020-05-27 01:12:40 +03:00
Dzmitry Malyshau
c350d6b06e Bug 1634425 - Integrate WebGPU API tracing r=jgilbert
This is the logic of tracing the WebGPU API calls at the level of wgpu-core,
serialized into a folder of choosing on the user drive. Traces are extremely portable,
they can be shared (on BugZilla) and then replayed on the developer machine,
which can have a different architecture from the users machine.

The standalone player is introduced in `gfx/wgpu/player`, similar to WebRender's Wrench.

The output dir is controlled by "dom.webgpu.traceDir" pref. No tracing happens if it's empty.

Differential Revision: https://phabricator.services.mozilla.com/D73333
2020-05-26 21:15:40 +00:00
sotaro
f76f5b4fd9 Bug 1637524 - Move DestroyRenderTexture() to TextureHost r=nical
The function is not specific to BufferTextureHost.

Differential Revision: https://phabricator.services.mozilla.com/D75044
2020-05-13 08:31:09 +00:00
Simon Giesecke
6138f953c4 Bug 1626570 - Improve handling of copying arrays in dom/webgpu/. r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D73666
2020-05-06 11:42:53 +00:00
Dzmitry Malyshau
8293136588 Bug 1632323 - Separate WebGPU internal usage bits from the public API r=groves
Differential Revision: https://phabricator.services.mozilla.com/D72065
2020-04-23 15:52:01 +00:00
Dzmitry Malyshau
69190b45f9 Bug 1630316 - Deallocate WebGPU shmems r=jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D71079
2020-04-15 19:58:08 +00:00
Dzmitry Malyshau
64cd35f805 Bug 1630082 - Refactor WebGPU sampler descriptor IPC r=jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D70953
2020-04-15 02:28:51 +00:00
Dzmitry Malyshau
69fbc69caf Bug 1629851 - Avoid WebGPU buffer flush on reads r=jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D70866
2020-04-14 21:26:45 +00:00
Dzmitry Malyshau
a92d135b19 Bug 1630054 - Properly free WebGPU swapchain buffers r=jgilbert
The unassigned buffers aren't associated with `wgpu-server` objects, they are just IDs allocated on the content side. So to free them, we just need to send an appropriate message.

Differential Revision: https://phabricator.services.mozilla.com/D70945
2020-04-14 21:59:13 +00:00
Dzmitry Malyshau
31428e09f9 Bug 1629896 - Fix WebGPU vertex attribute pointers r=jgilbert
the pointer wasn't advanced properly

Differential Revision: https://phabricator.services.mozilla.com/D70871
2020-04-14 22:40:15 +00:00
Dzmitry Malyshau
e78568a6b3 Bug 1622846 - Update WebGPU TextureDescriptor API r=jgilbert,webidl,smaug
Differential Revision: https://phabricator.services.mozilla.com/D70762
2020-04-14 12:52:03 +00:00
Dzmitry Malyshau
8a6198b3b1 Bug 1602888 - WebGPU copy operations r=jgilbert,webidl,smaug
Differential Revision: https://phabricator.services.mozilla.com/D70637
2020-04-13 13:59:24 +00:00
Dzmitry Malyshau
67c0c1d895 Bug 1624174 - Update wgpu to get the coordinate spaces right r=jgilbert
The updated wgpu has the coordinate space fixes.
Depends on

  - https://phabricator.services.mozilla.com/D70421
  - https://phabricator.services.mozilla.com/D70432
  - https://phabricator.services.mozilla.com/D70646

Differential Revision: https://phabricator.services.mozilla.com/D70140
2020-04-13 13:42:15 +00:00
Dzmitry Malyshau
437db8f4c3 Bug 1622846 - Fix WebGPU AttributeSet r=webidl,smaug
Differential Revision: https://phabricator.services.mozilla.com/D70635
2020-04-12 22:48:09 +00:00
Dzmitry Malyshau
1ad3e55b3c Bug 1602133 - Fix WebGPU canvas map population r=jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D70081
2020-04-07 18:53:34 +00:00
Dzmitry Malyshau
da83703f59 Bug 1602133 - WebGPU presentation r=jgilbert,webidl,smaug,aosmond
This change adds support for CanvasContext presenting WebGPU via CPU readback.
The presentation is handled mostly on GPU process side by managing a list of staging buffers
and copying the contents into a WR external image (backed by an external buffer).

Differential Revision: https://phabricator.services.mozilla.com/D68032
2020-04-06 22:29:18 +00:00
Cosmin Sabou
9def97fd40 Backed out changeset bc6b2b003c6e (bug 1602133) for causing build bustages on CanvasRenderingContextHelper.cpp. 2020-04-06 23:46:51 +03:00
Dzmitry Malyshau
deb2867b31 Bug 1602133 - WebGPU presentation r=jgilbert,webidl,smaug,aosmond
This change adds support for CanvasContext presenting WebGPU via CPU readback.
The presentation is handled mostly on GPU process side by managing a list of staging buffers
and copying the contents into a WR external image (backed by an external buffer).

Differential Revision: https://phabricator.services.mozilla.com/D68032
2020-04-06 20:10:03 +00:00
Bogdan Tara
1cfabed655 Backed out changeset 377a757c583d (bug 1602133) for webgpu related bustages CLOSED TREE 2020-04-06 21:59:57 +03:00
Dzmitry Malyshau
4a5833e82b Bug 1602133 - WebGPU presentation r=jgilbert,webidl,smaug,aosmond
This change adds support for CanvasContext presenting WebGPU via CPU readback.
The presentation is handled mostly on GPU process side by managing a list of staging buffers
and copying the contents into a WR external image (backed by an external buffer).

Differential Revision: https://phabricator.services.mozilla.com/D68032
2020-04-02 19:55:01 +00:00
Dzmitry Malyshau
79d0703894 Bug 1622261 - Refactor the ID recycling to always cycle through the GPU process
Previously, we kept the object IDs managed on content side only.
The GPU side would work with given indices.
When an object is destroyed, we'd free the ID on the content side and signal the GPU to delete the object.
Problem is that on the GPU process the object may still be kept alive for as long as any dependants are alive.

What this change is doing - hooking up the callbacks to the *actual* freeing of IDs on the GPU side.
These callbacks end up in messages from WebGPUParent to WebGPUChild, and only then the IDs are freed
on the content side and able to be reused.

Differential Revision: https://phabricator.services.mozilla.com/D67211
2020-03-23 07:54:08 +00:00
Dzmitry Malyshau
f04d1aaa2c Bug 1622846 - WebGPU bindings update to the spec r=jgilbert,webidl,smaug
Updates `wgpu` code as well as our WebIDL bindings.

The `wgpu-types` is a new component crate that has public types available to
Rust applications that target the Web directly.

Differential Revision: https://phabricator.services.mozilla.com/D67013
2020-03-16 21:32:37 +00:00
Dzmitry Malyshau
2523858c32 Bug 1614703 - WebGPU render pipeline creation r=jgilbert,webidl,baku
Differential Revision: https://phabricator.services.mozilla.com/D64833
2020-03-03 16:37:02 +00:00
Mihai Alexandru Michis
ca61f85018 Backed out changeset f1c86e7d23cd (bug 1614703) for causing bustages in WebGPUParent.cpp
CLOSED TREE
2020-03-03 17:23:55 +02:00
Dzmitry Malyshau
3d650579fb Bug 1614703 - WebGPU render pipeline creation r=jgilbert,webidl,baku
Differential Revision: https://phabricator.services.mozilla.com/D64833
2020-03-03 15:08:24 +00:00
Dzmitry Malyshau
1e1226ada3 Bug 1614702 - WebGPU textures, texture views, and samplers r=jgilbert,webidl,smaug
this change adds an ability to create WebGPU textures, views, and samplers

Differential Revision: https://phabricator.services.mozilla.com/D63595
2020-02-24 20:12:16 +00:00
Dorel Luca
c70d35fe7c Backed out changeset 8f51a5fac21c (bug 1614702) for build-notarization failures. CLOSED TREE 2020-02-25 00:54:54 +02:00
Dzmitry Malyshau
c21b595d50 Bug 1614702 - WebGPU textures, texture views, and samplers r=jgilbert,webidl,smaug
this change adds an ability to create WebGPU textures, views, and samplers

Differential Revision: https://phabricator.services.mozilla.com/D63595
2020-02-24 20:12:16 +00:00
Dzmitry Malyshau
2b03fd8b22 Bug 1602131 - WebGPU render passes r=jgilbert,webidl,smaug
Adds support for recording render passes in WebGPU.
The `wgpu` logo is also added to the repository ("gfx/wgpu/logo.png") under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/3.0/) license.

Differential Revision: https://phabricator.services.mozilla.com/D62461
2020-02-19 19:25:30 +00:00
Dzmitry Malyshau
b90ea4e243 Bug 1609175 - WebGPU bind groups and compute pipelines r=jgilbert,webidl,smaug,bzbarsky
Adds support for bind groups and compute pipelines
The end goal of this PR is to run the compute example.

Differential Revision: https://phabricator.services.mozilla.com/D60746
2020-01-24 16:27:09 +00:00
Noemi Erli
496ea2ef0b Backed out changeset 136b3044f6a6 (bug 1609175) for causing build bustages in WebGPUChild.cpp CLOSED TREE 2020-01-24 17:20:31 +02:00
Dzmitry Malyshau
a091f4bc8b Bug 1609175 - WebGPU bind groups and compute pipelines r=jgilbert,webidl,smaug,bzbarsky
Adds support for bind groups and compute pipelines
The end goal of this PR is to run the compute example.

Differential Revision: https://phabricator.services.mozilla.com/D60746
2020-01-24 05:05:34 +00:00
Dzmitry Malyshau
71c5646998 Bug 1596128 - WebGPU compute passes r=jgilbert,webidl,bzbarsky
Update third party dependencies
WebGPU command encoder creation
WebGPU CommandBuffer creation and submission
WebGPU Compute pass recording

Differential Revision: https://phabricator.services.mozilla.com/D59896
2020-01-22 07:31:51 +00:00
Dzmitry Malyshau
0a955f6900 Bug 1600929 - WebGPU buffer creation and mapping r=jgilbert,bzbarsky
This is the basic functionality needed to work with buffers.
What it doesn't have:
  - ability to re-map the buffer for writing
  - async writing map
  - most of the validation

Differential Revision: https://phabricator.services.mozilla.com/D55656
2019-12-10 17:07:18 +00:00