Commit Graph

67 Commits

Author SHA1 Message Date
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
nd419
bd911114ea Bug 1629419 - Replaced size call with .empty r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D80049
2020-06-25 13:22:07 +00:00
Coroiu Cristina
fc93a44fa4 Backed out changeset f5eed997b258 (bug 1629419) for crashtests on a CLOSED TREE 2020-06-23 16:50:20 +03:00
nd419
b273d1003d Bug 1629419 - Replaced size call with .empty r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D80037
2020-06-23 12:29:40 +00:00
Imanol Fernandez
ce398274d9 Bug 1646073 - Enable WebGL SwapChain pooling on Android. Use a separate SwapChain for WebVR. r=jgilbert
- Enable WebGL SwapChain pooling on Android. Creating and releasing Android Surfaces every frame causes a big performance hit due to AndroidSurface slow destructors bug.
- Add a separate SwapChain for WebVR. We are already using separate SwapChains for WebXR (WebGLFramebuffer::mOpaqueSwapChain) but not for WebVR (it uses the canvas backbuffer).

Differential Revision: https://phabricator.services.mozilla.com/D79840
2020-06-17 18:56:16 +00:00
Jeff Gilbert
c091b9c99a Bug 1632249 - Determine webgl's layers::TextureType in Present. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D79617
2020-06-15 18:26:14 +00:00
Jeff Gilbert
07e678e93d Bug 1632249 - NON_PREMULT TextureClient iff NON_PREMULT CanvasClient. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D78800
2020-06-15 18:26:02 +00:00
Jeff Gilbert
9b72a12ab0 Bug 1632249 - Create a separate WebGLContext::PresentInto function for WebXR. r=jgilbert
- Do not apply mIsCanvasDirty bailout when presenting from a opaque FBO
back buffer.
- Create a separate WebGLContext::PresentInto with more specific XR
validations and logic.
- Use the Opaque FBO backbuffer as source when calling
BlitBackbufferToCurDriverFB
- Always invalidate OpaqueFBO regardless of the WebGL context's
preserveDrawingBuffer value.

Differential Revision: https://phabricator.services.mozilla.com/D78301
2020-06-15 18:26:00 +00:00
Jeff Gilbert
600fe9187c Bug 1632249 - WebXR compositing fixes. r=imanol
Differential Revision: https://phabricator.services.mozilla.com/D78117
2020-06-15 18:25:58 +00:00
Jeff Gilbert
76b360ac16 Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-15 18:25:55 +00:00
Dorel Luca
64b1646aa1 Backed out 7 changesets (bug 1632249) for Gtest perma chrash in [@ mozilla::BlockingResourceBase::CheckAcquire()]. CLOSED TREE
Backed out changeset 4ff99aab3ee8 (bug 1632249)
Backed out changeset d5b7fe789001 (bug 1632249)
Backed out changeset 64fbb616a0f3 (bug 1632249)
Backed out changeset 6f19f43e0a0b (bug 1632249)
Backed out changeset 073302d26c5e (bug 1632249)
Backed out changeset 7c94d37c446e (bug 1632249)
Backed out changeset 204b899f436d (bug 1632249)
2020-06-11 19:44:20 +03:00
Jeff Gilbert
60317417f4 Bug 1632249 - NON_PREMULT TextureClient iff NON_PREMULT CanvasClient. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D78800
2020-06-11 06:37:40 +00:00
Jeff Gilbert
ad7294a0c6 Bug 1632249 - Create a separate WebGLContext::PresentInto function for WebXR. r=jgilbert
- Do not apply mIsCanvasDirty bailout when presenting from a opaque FBO
back buffer.
- Create a separate WebGLContext::PresentInto with more specific XR
validations and logic.
- Use the Opaque FBO backbuffer as source when calling
BlitBackbufferToCurDriverFB
- Always invalidate OpaqueFBO regardless of the WebGL context's
preserveDrawingBuffer value.

Differential Revision: https://phabricator.services.mozilla.com/D78301
2020-06-11 06:37:38 +00:00
Jeff Gilbert
90d87a7e54 Bug 1632249 - WebXR compositing fixes. r=imanol
Differential Revision: https://phabricator.services.mozilla.com/D78117
2020-06-11 06:37:36 +00:00
Jeff Gilbert
3aaf9ac591 Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-11 06:37:35 +00:00
Mihai Alexandru Michis
e083b100cf Backed out 6 changesets (bug 1632249) for causing bustages in CanvasRenderingContext2D.cpp
CLOSED TREE

Backed out changeset c93972b05d4f (bug 1632249)
Backed out changeset 04f5127c85d5 (bug 1632249)
Backed out changeset b15d91e64a25 (bug 1632249)
Backed out changeset 71ad2ed8e9ba (bug 1632249)
Backed out changeset 6e9a89ead3a5 (bug 1632249)
Backed out changeset dd00e2da3a0f (bug 1632249)
2020-06-11 02:43:35 +03:00
Jeff Gilbert
1806a85b17 Bug 1632249 - NON_PREMULT TextureClient iff NON_PREMULT CanvasClient. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D78800
2020-06-10 22:21:09 +00:00
Jeff Gilbert
bcb8c1407b Bug 1632249 - Create a separate WebGLContext::PresentInto function for WebXR. r=jgilbert
- Do not apply mIsCanvasDirty bailout when presenting from a opaque FBO
back buffer.
- Create a separate WebGLContext::PresentInto with more specific XR
validations and logic.
- Use the Opaque FBO backbuffer as source when calling
BlitBackbufferToCurDriverFB
- Always invalidate OpaqueFBO regardless of the WebGL context's
preserveDrawingBuffer value.

Differential Revision: https://phabricator.services.mozilla.com/D78301
2020-06-10 22:21:07 +00:00
Jeff Gilbert
eb129a6dfc Bug 1632249 - WebXR compositing fixes. r=imanol
Differential Revision: https://phabricator.services.mozilla.com/D78117
2020-06-10 22:21:04 +00:00
Jeff Gilbert
8cb4edc9fb Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-10 22:21:02 +00:00
Dorel Luca
71e5f22bb8 Backed out 4 changesets (bug 1632249) for Build bustages and mda failures. CLOSED TREE
Backed out changeset cdaa8a4e9e36 (bug 1632249)
Backed out changeset 9ff26bcc580c (bug 1632249)
Backed out changeset 16d84439756f (bug 1632249)
Backed out changeset bbfe23c61add (bug 1632249)
2020-06-09 03:19:48 +03:00
Jeff Gilbert
f4a3c560f6 Bug 1632249 - NON_PREMULT TextureClient iff NON_PREMULT CanvasClient. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D78800
2020-06-08 20:58:03 +00:00
Imanol Fernandez
f4b40dbe8f Bug 1632249 - Create a separate WebGLContext::PresentInto function for WebXR. r=jgilbert
- Do not apply mIsCanvasDirty bailout when presenting from a opaque FBO back buffer.
- Create a separate WebGLContext::PresentInto with more specific XR validations and logic.
- Use the Opaque FBO backbuffer as source when calling BlitBackbufferToCurDriverFB
- Always invalidate OpaqueFBO regardless of the WebGL context’s preserveDrawingBuffer value.

Differential Revision: https://phabricator.services.mozilla.com/D78301
2020-06-08 20:35:38 +00:00
Jeff Gilbert
c3718cab39 Bug 1632249 - WebXR compositing fixes. r=imanol
Differential Revision: https://phabricator.services.mozilla.com/D78117
2020-06-08 20:36:14 +00:00
Jeff Gilbert
e37269cf62 Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-08 20:34:15 +00:00
Imanol Fernandez
19b07824db Bug 1640912 - Update xrCompatible flag when WebGLContext::makeXRCompatible call succeeds r=jgilbert,kip,daoshengmu
Currently WebGL xrCompatible flag is only set when enabling the xrCompatible attribute in the canvas.getContext() call. We also need to set it to true after succesful makeXRCompatible() calls

Differential Revision: https://phabricator.services.mozilla.com/D76849
2020-06-03 00:49:45 +00:00
Jeff Gilbert
486cc0fa2f Bug 1636524 - [webgl] framebufferTexture requires bindTexture. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D77149
2020-05-27 21:34:05 +00:00
Jeff Gilbert
e65529699b Bug 1636525 - Implicitly EndQuery before DeleteQuery. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D76941
2020-05-26 22:08:44 +00:00
David Parks
e67cace76b Bug 1627305: Remove non-trivial macros from WebGL CommandQueue code r=jgilbert
Replaces DECLARE_METHOD_DISPATCHER and DEFINE_METHOD_DISPATCHER with generic classes.

Differential Revision: https://phabricator.services.mozilla.com/D69676
2020-04-30 22:25:09 +00:00
David Parks
1e77130086 Bug 1621762: Part 7 - Add IpdlQueue actor traits to WebGLParent/WebGLChild r=jgilbert,jld
Adds IpdlQueue capability to PWebGL actors.  The WebGLChild, used in content processes, implements SyncProducerActor and AsyncConsumerActor because it sends (sync and async) messages and receives responses to them that it reads as async messages.  The WebGLParent, used in the compositor process, is a SyncConsumerActor and AsyncProducerActor for dual reasons.

Differential Revision: https://phabricator.services.mozilla.com/D68264
2020-04-30 22:24:44 +00:00
David Parks
6dd6269253 Bug 1621762: Part 5 - Change PWebGL alloc+constructor to Initialize message r=jgilbert,jld
We need to separate WebGL actor construction and initialization since IpdlQueue initialization needs the actor to already exist.

Differential Revision: https://phabricator.services.mozilla.com/D68262
2020-04-30 22:23:48 +00:00
David Parks
f3f7c00e1b Bug 1621762: Part 3 - Make some classes generic to support multiple remote WebGL implementations r=jgilbert
* Templatize ProducerView/ConsumerView/(Sync)CommandSource/(Sync)CommandSink to allow both Pcq and Ipdl versions, as the client code is identical.
* Rename Producer/Consumer -> PcqProducer/PcqConsumer.

Differential Revision: https://phabricator.services.mozilla.com/D68259
2020-04-30 22:23:02 +00:00
David Parks
f2ee292c04 Bug 1621762 - Part 2: Refactor WebGL MethodDispatcher code used in remoting r=jgilbert
* Remove CommandSink from WebGLMethodDispatcher.  The parameter is unneeded.
* Make MethodDispatcher code simpler.  This removes a layer of complexity (CommandDispatchDriver) involved in finding the correct method for a given ID number.
* Require WebGL methods whose signatures don't allow them to be remoted to directly call on the host object.  They are: ReadPixels, GetVRFrame, GetInternalFormatParameter, GetBufferSubData, GetLinkResult and TexImage.
* Fix a bunch of compilation issues with busted PcqParamTraits.
* implement PcqParamTraits for some missing types

Differential Revision: https://phabricator.services.mozilla.com/D68257
2020-04-30 22:22:52 +00:00
David Parks
c3d981fdc7 Bug 1621762 - Part 1: Basic refactoring of ProducerConsumerQueue & CommandQueue r=jgilbert
A lot of simple changes to prepare for later patches in the series:

* PcqCommand -> QueueCommand, PcqStatus -> QueueStatus, PcqParamTraits -> QueueParamTraits
* Consolidate BasicSink/Source into CommandSink/Source
* SyncCommandSource::mConsumer -> mResponseSink, SyncCommandSink::mProducer -> mResponseSource, CommandSource::mProducer -> mSource, CommandSink::mConsumer -> mSink
* Rename WebGLPcqParamTraits.h to WebGLQueueParamTraits.h
* ProducerConsumerQueue struct -> class.
* ProducerConsumerQueue::mProducer/mConsumer access -> ProducerConsumerQueue::TakeProducer/TakeConsumer
* Rename QueueStatus enum elements to follow style convention.
* Rename Status() to GetStatus() in ProducerView and ConsumerView to appease Linux.
* Rename CommandResult enum values to fit convention (and avoid Linux conflict with Success).

Differential Revision: https://phabricator.services.mozilla.com/D68256
2020-04-30 22:21:45 +00:00
Daniel Varga
05de0715f6 Backed out 7 changesets (bug 1621762) for causing build bustages at builds/worker/workspace/obj-build/dist/include/mozilla/dom/ProducerConsumerQueue.h
CLOSED TREE

Backed out changeset 03903e8f368e (bug 1621762)
Backed out changeset 21ef72486643 (bug 1621762)
Backed out changeset 70d103786c83 (bug 1621762)
Backed out changeset a3e1332998c3 (bug 1621762)
Backed out changeset 010f653b87d2 (bug 1621762)
Backed out changeset 0496adcb4582 (bug 1621762)
Backed out changeset 8d85420fd2e6 (bug 1621762)
2020-04-30 06:06:33 +03:00
David Parks
f9cef0cd7d Bug 1621762: Part 7 - Add IpdlQueue actor traits to WebGLParent/WebGLChild r=jgilbert,jld
Adds IpdlQueue capability to PWebGL actors.  The WebGLChild, used in content processes, implements SyncProducerActor and AsyncConsumerActor because it sends (sync and async) messages and receives responses to them that it reads as async messages.  The WebGLParent, used in the compositor process, is a SyncConsumerActor and AsyncProducerActor for dual reasons.

Differential Revision: https://phabricator.services.mozilla.com/D68264
2020-04-30 01:56:55 +00:00
David Parks
f4d9420f8d Bug 1621762: Part 5 - Change PWebGL alloc+constructor to Initialize message r=jgilbert,jld
We need to separate WebGL actor construction and initialization since IpdlQueue initialization needs the actor to already exist.

Differential Revision: https://phabricator.services.mozilla.com/D68262
2020-04-30 01:30:08 +00:00
David Parks
b05571f5ea Bug 1621762: Part 3 - Make some classes generic to support multiple remote WebGL implementations r=jgilbert
* Templatize ProducerView/ConsumerView/(Sync)CommandSource/(Sync)CommandSink to allow both Pcq and Ipdl versions, as the client code is identical.
* Rename Producer/Consumer -> PcqProducer/PcqConsumer.

Differential Revision: https://phabricator.services.mozilla.com/D68259
2020-04-30 01:25:27 +00:00
David Parks
014b3dedbe Bug 1621762 - Part 2: Refactor WebGL MethodDispatcher code used in remoting r=jgilbert
* Remove CommandSink from WebGLMethodDispatcher.  The parameter is unneeded.
* Make MethodDispatcher code simpler.  This removes a layer of complexity (CommandDispatchDriver) involved in finding the correct method for a given ID number.
* Require WebGL methods whose signatures don't allow them to be remoted to directly call on the host object.  They are: ReadPixels, GetVRFrame, GetInternalFormatParameter, GetBufferSubData, GetLinkResult and TexImage.
* Fix a bunch of compilation issues with busted PcqParamTraits.
* implement PcqParamTraits for some missing types

Differential Revision: https://phabricator.services.mozilla.com/D68257
2020-04-30 01:19:36 +00:00
David Parks
de7ea74562 Bug 1621762 - Part 1: Basic refactoring of ProducerConsumerQueue & CommandQueue r=jgilbert
A lot of simple changes to prepare for later patches in the series:

* PcqCommand -> QueueCommand, PcqStatus -> QueueStatus, PcqParamTraits -> QueueParamTraits
* Consolidate BasicSink/Source into CommandSink/Source
* SyncCommandSource::mConsumer -> mResponseSink, SyncCommandSink::mProducer -> mResponseSource, CommandSource::mProducer -> mSource, CommandSink::mConsumer -> mSink
* Rename WebGLPcqParamTraits.h to WebGLQueueParamTraits.h
* ProducerConsumerQueue struct -> class.
* ProducerConsumerQueue::mProducer/mConsumer access -> ProducerConsumerQueue::TakeProducer/TakeConsumer
* Rename QueueStatus enum elements to follow style convention.
* Rename Status() to GetStatus() in ProducerView and ConsumerView to appease Linux.
* Rename CommandResult enum values to fit convention (and avoid Linux conflict with Success).

Differential Revision: https://phabricator.services.mozilla.com/D68256
2020-04-30 01:19:33 +00:00
Imanol Fernandez
e1552ad2af Bug 1614499 - Implement XRWebGLLayer r=jgilbert,daoshengmu
Differential Revision: https://phabricator.services.mozilla.com/D62809
2020-04-07 18:48:13 +00:00
Simon Giesecke
b572028450 Bug 1052940 - Make Maybe<T> only declare copy/move operations if T is copyable/movable. r=froydnj,jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D68172
2020-03-27 14:10:45 +00:00
Jeff Gilbert
10fe46ffae Bug 1624768 - Forbid multisampled unsized DEPTH_STENCIL. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D68135
2020-03-25 05:40:54 +00:00
Brindusan Cristian
3d9ab7914b Backed out changeset 58d155b0b54a (bug 1624768) for mochitest failures at test_2_conformance2__renderbuffers__multisampled-depth-renderbuffer-initialization.html. 2020-03-25 06:00:00 +02:00
Jeff Gilbert
fc8659ad20 Bug 1624768 - Forbid multisampled unsized DEPTH_STENCIL. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D68135
2020-03-25 01:40:41 +00:00
Jeff Gilbert
b246d7d276 Bug 1622536 - Treat js::Scalar::MaxTypedArrayViewType like Uint8Array for webgl.compressedTexImage. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D67396
2020-03-19 09:15:22 +00:00
Jeff Gilbert
5971c7e9ce Bug 1618325 - Check IsContextLost in ReadPixels. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D65435
2020-03-05 15:54:13 +00:00
Jeff Gilbert
4d5da1cfaf Bug 1617785 - Optimize GetDrawFetchLimits and vertexAttribPointer. r=lsalzman
Our goal here is to just be fast enough that we don't need to cache.

Differential Revision: https://phabricator.services.mozilla.com/D64215
2020-02-26 00:44:26 +00:00
Kris Maglione
232ff37e9f Bug 1535617: Part 2 - Clear weak references for most cycle collected objects on unlink. r=mccr8
This covers most cycle collected objects which support weak references, but
not the ones which inherit from a cycle collected class and don't do any cycle
collection on their own.

Differential Revision: https://phabricator.services.mozilla.com/D63962
2020-02-25 19:44:39 +00:00
Jeff Gilbert
1748a3ea18 Bug 1616715 - Make ReadPixelDesc per-call. r=lsalzman
GetSurfaceSnapshot (and similar) want to ReadPixels the backbuffer,
without having to navigate the GL PIXEL_PACK state.
Since this is cold cold code, it's nice to reduce the backend state by
making ReadPixelsDesc/PixelPackState per-call, and tracked by the
client. Arguably, PIXEL_PACK_BUFFER should be per-call as well.

Differential Revision: https://phabricator.services.mozilla.com/D63587
2020-02-21 03:12:41 +00:00