Commit Graph

122 Commits

Author SHA1 Message Date
Randell Jesup
fcaf70841e Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 18:47:08 +00:00
Noemi Erli
2390d257e6 Backed out changeset 12a59e5a50bf (bug 1207753) for causing build bustage CLOSED TREE 2022-03-16 18:32:51 +02:00
Randell Jesup
4b033a5256 Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 16:16:14 +00:00
Butkovits Atila
927ad62c6a Backed out changeset a68ee4b09f92 (bug 1207753) for causing Hazard bustages. CLOSED TREE 2022-03-16 14:38:14 +02:00
Randell Jesup
7d4b5fae04 Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 12:01:14 +00:00
Emilio Cobos Álvarez
94d7e11a79 Bug 1758169 - Clean up WebGPU lifetime handling a bit. r=nical
No behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D140384
2022-03-08 15:00:39 +00:00
Nika Layzell
9e65eb911e Bug 1751948 - Part 1: Fix IPDL unified build issues, r=ipc-reviewers,mccr8
The changes in this patch stack will change how IPDL generated files are built,
such that these issues are now surfaced, especially during non-unified builds.

Differential Revision: https://phabricator.services.mozilla.com/D137165
2022-02-28 21:01:47 +00:00
Andrew Osmond
c18a944c15 Bug 1754978 - Part 2. Switch WebGPU to use async image pipelines for display. r=kvark
This patch removes more main thread dependencies from the content side
of WebGPU. Instead of issuing a resource update for an external image,
we now use an async image pipeline in conjunction with
CompositableInProcessManager from part 1. This allows us to update the
HTMLCanvasElement bound to the WebGPU device without having to go
through the main thread, or even the content process after the swap
chain update / readback has been requested.

Differential Revision: https://phabricator.services.mozilla.com/D138887
2022-02-18 15:59:13 +00:00
Iulian Moraru
3dbfe82835 Backed out 2 changesets (bug 1754978) for causing valgrind bustages.
Backed out changeset 491a985fc34a (bug 1754978)
Backed out changeset 98983bf9eaed (bug 1754978)
2022-02-18 00:36:31 +02:00
Andrew Osmond
a18bf8a50c Bug 1754978 - Part 2. Switch WebGPU to use async image pipelines for display. r=kvark
This patch removes more main thread dependencies from the content side
of WebGPU. Instead of issuing a resource update for an external image,
we now use an async image pipeline in conjunction with
CompositableInProcessManager from part 1. This allows us to update the
HTMLCanvasElement bound to the WebGPU device without having to go
through the main thread, or even the content process after the swap
chain update / readback has been requested.

Differential Revision: https://phabricator.services.mozilla.com/D138887
2022-02-16 22:23:20 +00:00
Andrew Osmond
5e0eefe182 Bug 1754556 - Update WebGPU external image resource only after present is complete. r=kvark
This patch ensures that we only update the external image resource for
WebGPU when there has been an actual change for the resource. In order
to guarantee this, we wait for the present to complete, and only then
issue the update. WebRenderBridgeChild::SendResourceUpdates will also
trigger a frame generation if any resources were changed, which means we
don't need to trigger a paint on the frame itself anymore.

Note that we still have a race condition when we write into the
MemoryTextureHost while in PresentCallback, and the renderer thread may
be accessing the pixel data to upload to the GPU.

Differential Revision: https://phabricator.services.mozilla.com/D138349
2022-02-11 01:26:42 +00:00
Nika Layzell
dabb46c84d Bug 1736371 - Default new actors to be refcounted, r=alwu,media-playback-reviewers,mccr8
The changes to ipdl actors were mechanical, and largely automated using
a script.

Differential Revision: https://phabricator.services.mozilla.com/D137237
2022-02-09 17:29:47 +00:00
Andrew Osmond
8f1c963ed3 Bug 1746538 - Make PWebGPU managed by PCanvasManager. r=kvark
Similar to PWebGL, we want PCanvasManager to manage the PWebGPU
protocol. This will allow us to reuse the machinery that works for both
the main thread, and arbitrary worker threads to create PWebGPU
protocols.

For now, the only owner is still the main thread, so it should work very
similarly as to how it does with PCompositorBridge.

This patch also introduces some quality of life changes, such as making
the protocol ref-counted, and avoiding respinning the wheel for
CanSend() for IPDL actors.

Differential Revision: https://phabricator.services.mozilla.com/D134097
2022-02-02 20:49:23 +00:00
Dzmitry Malyshau
e7c5d38a9a Bug 1751718 - Reject WebGPU device promise on wrong features and limits r=jimb
Differential Revision: https://phabricator.services.mozilla.com/D136770
2022-01-28 00:08:53 +00:00
Dzmitry Malyshau
41f4223223 Bug 1750817 - Fix WebGPU device cleanup r=jimb,jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D136502
2022-01-25 05:41:40 +00:00
Dzmitry Malyshau
00b844026c Bug 1710680 - WebGPU createXxxPipelineAsync implementation r=jimb,webidl,smaug
Differential Revision: https://phabricator.services.mozilla.com/D136521
2022-01-22 15:53:47 +00:00
Randell Jesup
70ee979e37 Bug 1746410: WebGPU cleanup r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D134020
2021-12-16 16:30:37 +00:00
Dzmitry Malyshau
0b48a2d1e1 Bug 1743667 - Hook up WebGPU device limits and features r=jgilbert,webidl,smaug
Differential Revision: https://phabricator.services.mozilla.com/D133280
2021-12-10 01:09:04 +00:00
Dzmitry Malyshau
c4c52fc4b6 WIP: Bug 1622846 - Support WebGPU adapter isFallbackAdapter r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D133208
2021-12-08 15:54:26 +00:00
Dzmitry Malyshau
7f7df83147 Bug 1743847 - Throw an exception in WebGPU GetCurrentTexture r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D133143
2021-12-08 15:06:54 +00:00
Dzmitry Malyshau
caaffc3a03 Bug 1622846 - Update wgpu to 28ba9d8 r=jimb,emilio
Update GPUTextureUsage bit names to match upstream.

Differential Revision: https://phabricator.services.mozilla.com/D132058
2021-11-29 21:57:04 +00:00
Csoregi Natalia
9c8715f550 Backed out changeset 9e97159bb402 (bug 1622846) for causing bp-hybrid bustages on WebGPUChild.cpp CLOSED TREE 2021-11-29 21:30:42 +02:00
Dzmitry Malyshau
35ccd380fa Bug 1622846 - Update wgpu to 5f6c067 r=jimb,emilio
Update GPUTextureUsage bit names to match upstream.

Differential Revision: https://phabricator.services.mozilla.com/D132058
2021-11-29 18:37:21 +00:00
Dzmitry Malyshau
32bd65943c Bug 1740284 - WebGPU: unlock presentation buffers on error r=jimb
Differential Revision: https://phabricator.services.mozilla.com/D131501
2021-11-18 22:13:35 +00:00
Dzmitry Malyshau
56f4d4bdc1 Bug 1730014 - Avoid ASCII intermediate for WGSL shader code r=jgilbert,webidl,emilio
we were doing UTF16 -> ASCII null term -> UTF8, and we were losing information on the way.
Now we go UTF16 -> UTF8 -> UTF8 null term
Also, we no longer accept SPIR-V

Differential Revision: https://phabricator.services.mozilla.com/D125123
2021-09-10 17:19:41 +00:00
Dzmitry Malyshau
5695f517a5 Bug 1726626 - Move gfx/wgpu into a 3rd party dependency r=jgilbert,bholley
This update makes wgpu a vendored dependency instead of having it in gfx/wgpu.

## Notes


It relies on https://phabricator.services.mozilla.com/D123157

It has a quirk related to OpenGL ES backend. Previousy, we manually had to disable GL backend
in order to avoid vendoring WASM dependencies in. This time, manual editing is more complicated,
so instead this change adds a few cargo patch lines to point WASM dependencies to dummy projects.

The update also totally removes SPIRV-Cross, since the latest `wgpu` doesn't depend on it any more.
The compiled binary size for Gecko should improve with this.

Differential Revision: https://phabricator.services.mozilla.com/D123153
2021-09-03 16:52:08 +00:00
Dzmitry Malyshau
1da5651ba2 Bug 1622846 - Update WebGPU API to latest and wgpu-core to 0.9 r=webidl,jgilbert,jimb,emilio
This *mostly* gets us the latest WebIDL API of WebGPU. There is a few limits we are missing, and maybe some things I didn't notice.
But it gets us the new `GPUCanvasContext`, `GPUSupportedLimits`, and `GPUVertexStepMode`.

Differential Revision: https://phabricator.services.mozilla.com/D120764
2021-08-18 14:11:21 +00:00
Brindusan Cristian
1cdd46e3ba Backed out changeset e34f15d5e74d (bug 1622846) for causing linux toolchain build bustages.
CLOSED TREE
2021-08-18 07:58:38 +03:00
Dzmitry Malyshau
6d7cfc6c90 Bug 1622846 - Update WebGPU API to latest and wgpu-core to 0.9 r=webidl,jgilbert,jimb,emilio
This *mostly* gets us the latest WebIDL API of WebGPU. There is a few limits we are missing, and maybe some things I didn't notice.
But it gets us the new `GPUCanvasContext`, `GPUSupportedLimits`, and `GPUVertexStepMode`.

Differential Revision: https://phabricator.services.mozilla.com/D120764
2021-08-17 15:22:45 +00:00
Kagami Sascha Rosylight
fc9e75a985 Bug 1723050 - Part 32: Replace typedef by using in dom/webgpu/ r=kvark
Differential Revision: https://phabricator.services.mozilla.com/D121330
2021-08-05 00:11:58 +00:00
Noemi Erli
a523fe1ad1 Backed out changeset 3cb3442efede (bug 1622846) for causing Bug 1722702 CLOSED TREE 2021-07-29 20:14:46 +03:00
Dzmitry Malyshau
9963bd1ee1 Bug 1622846 - Update WebGPU API to latest and wgpu-core to 0.9 r=webidl,jgilbert,jimb,emilio
This *mostly* gets us the latest WebIDL API of WebGPU. There is a few limits we are missing, and maybe some things I didn't notice.
But it gets us the new `GPUCanvasContext`, `GPUSupportedLimits`, and `GPUVertexStepMode`.

Differential Revision: https://phabricator.services.mozilla.com/D120764
2021-07-27 22:37:46 +00:00
Dzmitry Malyshau
504ad98a7b Bug 1680377 - Follow-up fixes to WebGPU error scope
addressing post-landing review notes of
https://phabricator.services.mozilla.com/D118741

Differential Revision: https://phabricator.services.mozilla.com/D119654
2021-07-13 01:26:46 +00:00
Dzmitry Malyshau
fd414128b4 Bug 1680377 - WebGPU error scopes r=webidl,emilio
Implements the error scopes - primary way of getting the errors back from WebGPU.
Currently we ignore the filter.

Differential Revision: https://phabricator.services.mozilla.com/D118741
2021-07-08 20:24:12 +00:00
Dzmitry Malyshau
179d3960ce Bug 1713162 - Detect copies into WebGPU swapchain for presentation r=jimb
Differential Revision: https://phabricator.services.mozilla.com/D116132
2021-05-27 17:20:28 +00:00
Dzmitry Malyshau
cee0219fda Bug 1710679 - Implement WebGPU render bundles r=webidl,jgilbert,smaug
Differential Revision: https://phabricator.services.mozilla.com/D114878
2021-05-26 20:30:45 +00:00
Dzmitry Malyshau
f1987ffe07 Bug 1711926 - Spew WebGPU validation errors to the console r=jimb
Differential Revision: https://phabricator.services.mozilla.com/D115503
2021-05-22 01:03:00 +00:00
Noemi Erli
f14d163f31 Backed out changeset 5efc966ba9a4 (bug 1711926) for causing assertions in nsContentUtils.cpp 2021-05-21 02:46:09 +03:00
Dzmitry Malyshau
853497a156 Bug 1711926 - Spew WebGPU validation errors to the console r=jimb
Differential Revision: https://phabricator.services.mozilla.com/D115503
2021-05-20 21:00:36 +00:00
Dzmitry Malyshau
163a4a7ed8 Bug 1709462 - Fix freeing of WebGPU bind group layouts r=jimb
When the pipeline layout is implicit at pipeline creation,
we collect the IDs of BGLs, to be able to produce GPUBindGroupLayout
object upon user request. However, the produced object didn't know if
it owns the ID or borrows it, so it would issue a "drop" when going out of scope.

This change establishes this distinction. In addition, it gets the Pipeline Layout ID,
and together with the BGL ids, they are sent to GPU process upon pipeline destruction.

When the GPU process is done with these IDs used, it will kick back a message to the
Content process, allowing the IDs to be reclaimed.

Differential Revision: https://phabricator.services.mozilla.com/D114649
2021-05-18 16:26:27 +00:00
Dzmitry Malyshau
0fad36e113 Bug 1637972 - WebGPU handle canvas resize r=aosmond
we recreate the swapchain on the size change

Differential Revision: https://phabricator.services.mozilla.com/D113172
2021-04-27 18:36:48 +00:00
Dzmitry Malyshau
cdb4fe1fcb Bug 1622846 - Update BlendFactor API in WebGPU r=webidl,jimb,smaug
This is another incremental update of wgpu and WebGPU APIs.
It increases stability and makes us run most of the Austin's samples (again).
Likely fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1704148

Differential Revision: https://phabricator.services.mozilla.com/D112828
2021-04-22 19:18:49 +00:00
Dzmitry Malyshau
2e592c660f Bug 1704911 - Fix Shmem circulation for buffers that are both mappable and mapped at creation r=jgilbert
We are now passing an extra flag on Unmap to keep the shmem around.
Previously, we'd be freeing the Shmem accidentally on buffers that are writable and mapped at creation.
We also add a bit of logging on the WebGPUParent side.

Differential Revision: https://phabricator.services.mozilla.com/D112264
2021-04-16 22:32:44 +00:00
Dzmitry Malyshau
89ced952fc Bug 1622846 - Update wgpu and WebGPU IDL for the new copy views API r=webidl,jgilbert,smaug
Updates wgpu, WebGPU IDL, in particular the ImageCopyXxx types and render pass attachments.
Adds explicit mapping of the GPUTextureFormat enum. Our old casting was incorrect, because the enums diverged a bit.

Differential Revision: https://phabricator.services.mozilla.com/D110997
2021-04-08 14:35:42 +00:00
Butkovits Atila
8d90cf4b42 Backed out changeset 5b033d5d6e6d (bug 1622846) for causing bustages on WebGPUChild.cpp. CLOSED TREE 2021-04-08 06:08:25 +03:00
Dzmitry Malyshau
92d0383ea9 Bug 1622846 - Update wgpu and WebGPU IDL for the new copy views API r=webidl,jgilbert,smaug
Updates wgpu, WebGPU IDL, in particular the ImageCopyXxx types and render pass attachments.
Adds explicit mapping of the GPUTextureFormat enum. Our old casting was incorrect, because the enums diverged a bit.

Differential Revision: https://phabricator.services.mozilla.com/D110997
2021-04-07 22:46:47 +00:00
Dzmitry Malyshau
5249d3e499 Bug 1697509 - Fix WebGPU shaders and adapter limits r=jgilbert
Expose adapter limits, hook up spirv-cross

Differential Revision: https://phabricator.services.mozilla.com/D107840
2021-03-16 22:57:08 +00:00
Dzmitry Malyshau
29595bee3e 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
27e5308381 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
cae8a0ef30 Backed out changeset 0c0c723b0a0e (bug 1622846) for build bustages in Device.h. CLOSED TREE 2021-03-04 22:02:58 +02:00