Граф коммитов

455 Коммитов

Автор SHA1 Сообщение Дата
Jim Chen 2c94ad0e54 Bug 1472140 - 3. Remove ForceIsFirstPaint ipdl call; r=kats
Remove the PCompositorBridge::ForceIsFirstPaint call that's no longer
used anywhere.
2018-07-31 12:21:49 -04:00
Kartikaya Gupta 22456cd52b Bug 1479075 - Ensure FlushRenderingAsync actually flushes the compositor. r=sotaro
MozReview-Commit-ID: AfVIwLj2YJp

--HG--
extra : rebase_source : 3c9f4af10be9ab38fb708a2be4cb9393cd7e86c7
2018-07-28 04:47:08 -04:00
Kartikaya Gupta bfa67498d5 Bug 1478504 - Use NotifyPipelineRendered instead of DidComposite for WebRender. r=sotaro
MozReview-Commit-ID: 4eaMTEPD9NY

--HG--
extra : rebase_source : 7d2f5b5fe4d45f135f0899dccf6a910848b5c7e4
2018-07-27 09:42:30 -04:00
Brian Hackett 562987ce84 Bug 1465466 Part 3 - When recording/replaying, composite in the main thread's event loop instead of waiting for vsyncs, r=nical.
--HG--
extra : rebase_source : 0dbdcb4698e349ceb53e0621d5fa453bb1f17357
2018-07-23 21:47:28 +00:00
Brian Hackett 99d34528e4 Bug 1465466 Part 1 - Use a separate compositor in recording/replaying processes, r=nical.
--HG--
extra : rebase_source : 003f6557370f2e4e6959ea14e833f7e2e617c5b0
2018-07-23 21:46:47 +00:00
Ryan Hunt f8b04d075b Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
This commit implements the CONTENT_FRAME_TIME metric for the webrender code
path. It follows the same structure as the previous commit implementing it for
the non-webrender code path.

MozReview-Commit-ID: 6aI5uISjgge

--HG--
extra : rebase_source : 973253589d6c27138bd49f4d81b3e74c3fcf5022
extra : histedit_source : 5b126b0285b674d59d8bd4b7bda09a01804dc043
2018-06-26 13:43:14 -05:00
Ryan Hunt 73970a1f68 Bug 1470528 - Implement CONTENT_FRAME_TIME for the non-webrender codepath. r=sotaro, data-review=francois
This commit adds the CONTENT_FRAME_TIME metric which tracks the time from the beginning
of a paint in the content process until it is presented in the compositor.

There is existing logging for frame latency which tracks from the beginning of a refresh
tick until the frame is presented. This is undesirable for this probe as javascript and
layout can run in this time period. So this probe uses the existing infrastructure for
logging frame latency, but uses a start time from BeginTransaction in layer manager.

MozReview-Commit-ID: 5z9LS3tsZTY

--HG--
extra : rebase_source : 29ebd6a85dd49ee263d50e3674eec4957ac5f12a
extra : histedit_source : 1aa9f4f31b5bff6736e0c0e576a5611880d0ab33
2018-06-26 13:40:10 -05:00
Narcis Beleuzu 04b4925170 Backed out 3 changesets (bug 1470528) for build bustages on WebRenderBridgeParent. CLOSED TREE
Backed out changeset 90513daef576 (bug 1470528)
Backed out changeset e438548991db (bug 1470528)
Backed out changeset f859daf8d8d9 (bug 1470528)
2018-07-04 00:41:14 +03:00
Ryan Hunt c284332e41 Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
This commit implements the CONTENT_FRAME_TIME metric for the webrender code
path. It follows the same structure as the previous commit implementing it for
the non-webrender code path.

MozReview-Commit-ID: 6aI5uISjgge

--HG--
extra : rebase_source : acbf83d0071e8932b5e96016e6e39e27a7b4da8c
extra : histedit_source : a0f93f80441e5f45c0113244d15400d0f53d9c92
2018-06-26 13:43:14 -05:00
Ryan Hunt d34e6c84a0 Bug 1470528 - Implement CONTENT_FRAME_TIME for the non-webrender codepath. r=sotaro
This commit adds the CONTENT_FRAME_TIME metric which tracks the time from the beginning
of a paint in the content process until it is presented in the compositor.

There is existing logging for frame latency which tracks from the beginning of a refresh
tick until the frame is presented. This is undesirable for this probe as javascript and
layout can run in this time period. So this probe uses the existing infrastructure for
logging frame latency, but uses a start time from BeginTransaction in layer manager.

MozReview-Commit-ID: 5z9LS3tsZTY

--HG--
extra : rebase_source : cecb7149f50b2abe7a827dc20f1e8b8ade199258
extra : histedit_source : 581f8f38fc8335575d7275b903a8e1d6a9e5a369
2018-06-26 13:40:10 -05:00
sotaro 6bfc2aa91f Bug 1472600 - Update SyncHandle when Tab is moved between windows r=nical 2018-07-03 08:43:17 +09:00
Chris Peterson 2afd829d0f Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj
This patch is an automatic replacement of s/NS_NOTREACHED/MOZ_ASSERT_UNREACHABLE/. Reindenting long lines and whitespace fixups follow in patch 6b.

MozReview-Commit-ID: 5UQVHElSpCr

--HG--
extra : rebase_source : 4c1b2fc32b269342f07639266b64941e2270e9c4
extra : source : 907543f6eae716f23a6de52b1ffb1c82908d158a
2018-06-17 22:43:11 -07:00
Bogdan Tara 3737701cfa Merge mozilla-central to autoland. a=merge CLOSED TREE 2018-06-05 12:33:18 +03:00
sotaro d23a997a0d Bug 1466454 - Do not create CompositorWindow for non-WebRender case r=nical 2018-06-05 08:07:52 +09:00
Kartikaya Gupta 2cead810c0 Bug 1455597 - Flush the transaction to remove the pipeline before shutting down the WebRenderAPI. r=sotaro
MozReview-Commit-ID: GuQJjMzzQUE

--HG--
extra : rebase_source : 30f17418135fe68a3dfca0ee36f3df5c53924f24
2018-06-02 12:15:15 -04:00
Hiroyuki Ikezoe 6df13785df Bug 1464568 - Add an argument to ApplyAsyncProperties() to apply the transform by APZC or not. r=kats
In the next patch, we will introduce a new IPC function to get transform value
modified by both animations and APZC.

MozReview-Commit-ID: Uf5UHg5Jm

--HG--
extra : rebase_source : 68a52c110b049266ce982bc9284de8642dc3405d
2018-06-05 09:18:21 +09:00
Emilio Cobos Álvarez fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Kartikaya Gupta d807b18531 Bug 1417784 - Shift how the AsyncImagePipelineManager is notified of updates. r=sotaro
Instead of notifying the AsyncImagePipelineManager on the compositor
thread via the CompositorBridgeParent, we can send it the new pipeline
info directly from the RenderThread after the update happens. This
effectively splits the AsyncImagePipelineManager update-processing into
two parts: one that takes in the new pipeline info and one that process
it. This allows us to invoke the processing step from other code running
on the compositor thread, which we will need to do in the next patch.

MozReview-Commit-ID: 7xhm8I7bY4C

--HG--
extra : rebase_source : bfa62e326fd830bc2ef771138e5008fb2bc0d6b8
2018-05-28 11:29:41 -04:00
Dorel Luca f76b1b99de Merge mozilla-central to mozilla-inbound 2018-05-16 01:01:29 +03:00
James Willcox f4894ab521 Bug 1458258 - Fix compositor invalidatation after resume with e10s r=mattwoodrow
MozReview-Commit-ID: CAZCUXSa9WZ
2018-05-15 14:03:24 -05:00
Kartikaya Gupta 26d10c1120 Bug 1461122 - Implement DidComposite(LayersId,...) for CompositorBridgeParent. r=sotaro
MozReview-Commit-ID: 5glDqCdvkQG

--HG--
extra : rebase_source : e7bcf7d338b79002e30a7647c15669f1958409e2
2018-05-15 08:49:29 -04:00
Bogdan Tara fbf34d5681 Backed out 3 changesets (bug 1461122) for build bustages on workspace/build/src/obj-firefox/dist/include/mozilla/layers/CompositorBridgeParent.h CLOSED TREE
Backed out changeset 90445f7b62cd (bug 1461122)
Backed out changeset 9f87280ba566 (bug 1461122)
Backed out changeset 0efbd05857c2 (bug 1461122)
2018-05-15 15:13:08 +03:00
Kartikaya Gupta 976a28d5ae Bug 1461122 - Implement DidComposite(LayersId,...) for CompositorBridgeParent. r=sotaro
MozReview-Commit-ID: 5glDqCdvkQG

--HG--
extra : rebase_source : b3d50c9ffaa1b829b8a23fc5e16d15d1509eb080
2018-05-14 13:19:13 -04:00
James Willcox 2448df528a Bug 1453501 - Allow the compositor to be created in a paused state r=kats
MozReview-Commit-ID: B0wc8MYaBJg
2018-05-14 11:12:39 -05:00
shindli 42cb453a11 Backed out 3 changesets (bug 1453501) for bustage in build/build/src/gfx/gl/GLContextProviderEGL.cpp on a CLOSED TREE
Backed out changeset 8b53a7b34121 (bug 1453501)
Backed out changeset c07588586701 (bug 1453501)
Backed out changeset 6c231423492b (bug 1453501)
2018-05-14 17:05:14 +03:00
James Willcox 58d7215e3c Bug 1453501 - Allow the compositor to be created in a paused state r=kats
MozReview-Commit-ID: B0wc8MYaBJg
2018-05-14 08:15:38 -05:00
Kartikaya Gupta bc221bf045 Bug 1460988 - Don't hold the layer trees lock while making calls that block on WR threads. r=sotaro
MozReview-Commit-ID: BKNf5wpG1br

--HG--
extra : rebase_source : bd4d382095c5f562f31fb2ba2ad0098fd1944c00
2018-05-11 16:36:22 -04:00
Kartikaya Gupta d3693ff0d7 Bug 1457466 - Trigger a render/composite after an async scene build has been swapped in. r=nical
MozReview-Commit-ID: DLROm9gg544

--HG--
extra : rebase_source : d7ecffdfcb87b3148e5486b4f6810a6e73a9dcf3
2018-05-11 09:09:16 -04:00
Kartikaya Gupta 788be8ad4e Bug 1460289 - Reduce scope of indirect layer tree lock in RecvAdoptChild. r=sotaro
In particular, this change makes it so that we are not holding the lock
when we clone the WebRenderAPI, because that can result in a deadlock.

MozReview-Commit-ID: 33OGZdFMjEA

--HG--
extra : rebase_source : 4a1aeb81e3316a119d6b0aa798d827314543a70b
2018-05-09 15:23:30 -04:00
Kartikaya Gupta 88324fa347 Bug 1453360 - Store the compositor animation ids to delete until the epoch is rendered. r=nical
With async scene building, we might get the message to delete certain
compositor animation ids while we are still building and rendering
scenes that have those compositor animations. This patch associates
those ids with the epoch at which they are safe to delete, and only does
the deletion once we have rendered that epoch.

MozReview-Commit-ID: Jetfcdtwt1q

--HG--
extra : rebase_source : f06b8ee62e460432e8faed670e928f60cb6bc915
2018-04-27 10:32:31 -04:00
Kartikaya Gupta 3bb1df5d75 Bug 1453360 - Rename NotifyDidCompositeToPipeline to NotifyPipelineRendered. r=nical
This also rearranges the method implementation slightly to make the next
patch easier to read. This patch should have zero functional changes,
it's just refactoring.

MozReview-Commit-ID: 53StJ0TH3IT

--HG--
extra : rebase_source : 2f3aeb54271da75a7e051afc24b8a4c96f8496f2
2018-04-27 10:32:30 -04:00
Kartikaya Gupta b9e8e2302f Bug 1457246 - Don't hold the sIndirectLayerTreesLock while making synchronous calls to the RenderBackend thread. r=sotaro
MozReview-Commit-ID: KzXZxCb2nA6

--HG--
extra : rebase_source : 64bbd524c5c9b0208cfbfa3899ff75a80903a3c6
2018-04-26 15:29:21 -04:00
Ryan Hunt 4017e5ac25 Bug 1455408 - Remove dead code from CompositorBridgeParent that was used for changing thread priority. r=kats
MozReview-Commit-ID: CXELmNfZoaN

--HG--
extra : rebase_source : ae6b8a64336f35432923d21397554601a17b052d
extra : histedit_source : df67c107d7956b34b3512203d922582fde57ade1
2018-04-19 14:48:23 -05:00
Kartikaya Gupta fc9fac3891 Bug 1455974 - Ensure the metrics sharing IPC messages are sent from the compositor thread. r=botond
With WR+async scene building, the updater thread is no longer the
compositor thread, but we can only send the IPC messages from the
compositor thread. So we need to bounce those calls over to the right
thread.

MozReview-Commit-ID: 6M9bSLYLi5n

--HG--
extra : rebase_source : d908f22892f9d531266f100eeb4a863cb63d8270
2018-04-23 14:24:36 -04:00
Kartikaya Gupta 9c89bea7ea Bug 1455974 - Ensure that mCanSend is cleared at the right time. r=sotaro
mCanSend was being cleared in ActorDestroy which is fine, but we
actually cannot reliably send IPC messages from CompositorBridgeParent
after we get a RecvWillClose message, because that's the last thing that
the child side sends before it gets destroyed. After the WillClose
message there's no guarantee that the child side actor will still be
alive. So this patch also sets mCanSend to false in RecvWillClose.

mCanSend is only used in two places, both of which have to do with the
APZ metrics-sharing code, so this shouldn't have any unexpected
side-effects. It is needed for the next patch.

MozReview-Commit-ID: 8CuFienWVUU

--HG--
extra : rebase_source : 11e4455ffd8cd281d0a16ca34feb63fa89338ccc
2018-04-23 14:24:36 -04:00
Hiroyuki Ikezoe 1695970073 Bug 1454324 - Set non-animated values to the layer only if there is no running animation. r=kats
In the next patch, we skip updating animation value for the layer if the
animation value isn't changed.  So without this patch, we will have to update
animation value even if the value isn't changed at all.

MozReview-Commit-ID: 9tU7BTkNOHL

--HG--
extra : rebase_source : 0dbaaab9e52108c843f2d378785a67a8f374994c
2018-04-24 09:27:54 +09:00
Kartikaya Gupta 7c247ea2b5 Bug 1455715 - Fix some controller thread tasks that were bypassing the updater thread. r=botond
These tasks have an implicit ordering with other tasks that are
dispatched from the compositor thread to the updater thread, and so they
need to be bounced through the updater thread before we run them on the
controller thread.

MozReview-Commit-ID: 92nIYgyV8A2

--HG--
extra : rebase_source : c5edc5cb50dd44d1979d805bf17e707e1c8abac1
2018-04-20 14:27:35 -04:00
Kartikaya Gupta 697a7719d0 Bug 1455691 - Make the transaction id a struct instead of a uint64_t. r=mattwoodrow
MozReview-Commit-ID: 9yZknygQvFr

--HG--
extra : rebase_source : 8b7a2398bdabf52f2de1c5dbd30b6868c1e0bed0
2018-04-20 15:13:06 -04:00
Kartikaya Gupta ca319705c4 Bug 1455302 - Robustify the IsSamplerThread() check similarly to the updater code. r=botond
Same as the previous patch, but adapted for the sampler thread.

MozReview-Commit-ID: 7PVaPl38FkM

--HG--
extra : rebase_source : b7637270fea226cde15b9351a4ef8ac7ffab5796
2018-04-19 10:10:00 -04:00
Kartikaya Gupta 30e82b56dd Bug 1455302 - Allow scheduling updater thread tasks before we have the updater thread id. r=botond
This is possible if we just let the APZUpdater know during construction
if WR is enabled or not, and that information combined with the pref
will allow it to know whether to use the scene builder thread task queue
or just use the compositor thread as the updater thread.

MozReview-Commit-ID: 7IGMMtl7iFP

--HG--
extra : rebase_source : 3950adf77f4b48906b29cdb36f0437df1540bec6
2018-04-19 10:09:59 -04:00
Kartikaya Gupta ee76c6b413 Bug 1451469 - Maintain a map from WrWindowId to APZSampler. r=botond
MozReview-Commit-ID: Bfkfs6FTOQ6

--HG--
extra : rebase_source : 0ca8d3b9452b9ece36eadf2bd2b1bb1c0783756d
2018-04-16 17:39:13 -04:00
Kartikaya Gupta f245e247b3 Bug 1454430 - Ensure the ClearTree task runs before we shut down webrender. r=nical
MozReview-Commit-ID: BCc0zuZvktj

--HG--
extra : rebase_source : e35e41a33943a7e2d5eae869ace62802040a0d7a
2018-04-16 14:21:04 -04:00
Sebastian Hengst 0819f35e51 Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
sotaro d411e21feb Bug 1453195 - Reduce mOptions.UseWebRender() usage in CompositorBridgeParent r=nical 2018-04-12 12:18:50 +09:00
Tristan Bourvon a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
sotaro 35982d6737 Bug 1452901 - Schedule generate frame r=nical 2018-04-11 11:34:25 +09:00
Kartikaya Gupta 97a6b6003c Bug 1449982 - Conceptually split the mUpdaterQueue into separate queues per layers id. r=botond
This allows us to treat tasks from different layers id as independent,
thereby removing the unnecessary latency increase as described in bug
1449982 comment 33.

Note that we could probably implement this by actually maintaining
separate queues for each layers id, but that involves more overhead
since we would need to have a map from layers id to task queue, and
removing entries from that map becomes tricky with respect to locking
and timing.

MozReview-Commit-ID: 7jtYqNDwJqP

--HG--
extra : rebase_source : d55fa2c20c5e78a330033dcf049d5cc468024bb0
2018-04-10 12:30:01 -04:00
Kartikaya Gupta 7dd62afca0 Bug 1449982 - Maintain a map from WrWindowId to APZUpdater. r=botond
This will allow callbacks from rust code to get a handle to the
necessary APZUpdater instance on which to invoke functions.

MozReview-Commit-ID: 13XdzZrrtI5

--HG--
extra : rebase_source : 137af2a4c738a6e9294972be9e0566c9fdef58ac
2018-04-10 12:29:55 -04:00
Kartikaya Gupta 164909dbed Bug 1449982 - Move the window id allocation to CompositorBridgeParent. r=nical
This includes a signature change from CompositorBridgeParentBase ->
CompositorBridgeParent which is not strictly required, but it makes it less
likely that we'll accidentally create a WebRenderAPI from somewhere else
and pass a nonsense window id. In effect, the signature change makes it
likely that only CompositorBridgeParent will allocate the window ids.

MozReview-Commit-ID: 8AnnmI8RytR

--HG--
extra : rebase_source : 6fd957c4a9e5bb2175bee2cc89f7eb6d27a6bc9e
2018-04-10 12:29:55 -04:00
Kartikaya Gupta 42eff13cf2 Bug 1449982 - Don't hold the sIndirectLayerTreesLock unnecessarily while notifying APZ of a layer tree removal. r=botond
MozReview-Commit-ID: 2OqbmMHCxn9

--HG--
extra : rebase_source : ec94523ba6d56a0c9cbfe3bf1a35bfaf2ba4687c
2018-04-10 12:29:54 -04:00
sotaro fffbf4515b Bug 1450212 - Change CompositorWindow creation and destruction timing r=nical 2018-03-31 07:48:27 +09:00
Dorel Luca eb1ea97541 Merge mozilla-central to mozilla-inbound 2018-03-29 12:57:29 +03:00
Kartikaya Gupta d6673c9aad Bug 1449620 - Extract an APZUpdater class from APZSampler. r=botond
The APZUpdater class holds the methods that are to be run on the updater
thread. Note that there are a few differences between the APZSampler and
APZUpdater classes - most notably, APZSampler no longer has a
"RunOnSamplerThread" function because there should never be any need to
dispatch runnables to the sampler thread. There is still a
RunOnUpdaterThread in APZUpdater, as well as a mechanism for dispatching
runnables to the controller thread via the updater thread.

MozReview-Commit-ID: LLVWzRyhYWl

--HG--
extra : rebase_source : d3d2ae18b40f24473cab5567a48b67b8f478a733
2018-03-28 18:36:42 -04:00
Kartikaya Gupta cf0569e64e Bug 1447299 - Have the APZCTreeManagerParent store a reference to the APZSampler. r=botond
MozReview-Commit-ID: BNhkhFAmYP8

--HG--
extra : rebase_source : 43ff9d5f74add3b8b8b0cf651d06a14d8ec82885
2018-03-28 14:56:55 -04:00
sotaro 19a32411ca Bug 1191971 part 2 - Add capatiblity to enable DComp r=bas 2018-03-29 11:23:31 +09:00
sotaro 537c379106 Bug 1191971 part 1 - Create child window in gpu process r=bas 2018-03-29 11:21:47 +09:00
Kartikaya Gupta 395eaf8c66 Bug 1448490 - Make the layers id a struct instead of a uint64_t. r=mattwoodrow
The new struct is in LayersTypes.h, all the rest of the changes are just
replacing existing uint64_t instances with the new LayersId struct.

Note that there is one functional change, in
CompositorBridgeParent::DeallocPWebRenderBridgeParent, where we now
correctly convert the PipelineId to a LayersId before using it to index
into sIndirectLayerTrees, whereas before we were incorrectly just using
the mHandle part of the PipelineId.

MozReview-Commit-ID: GFHZSZiwMrP

--HG--
extra : rebase_source : d2b274f63aaee2ee9bba030297e0a37a19af0d6c
2018-03-24 19:06:01 -04:00
Kartikaya Gupta e862bb4f2f Bug 1447157 - Avoid crashing if an unregistered layer tree gets adopted. r=botond
It looks like we can get layer tree adopted messages when the compositor
doesn't have an entry for that layer tree in sIndirectLayerTrees. So we
need to null-check all the things we pull out of that structure - all
the properties are already null-checked except for the mParent. This
patch adds a null check around that as well.

MozReview-Commit-ID: 2fb4SdvgSrG

--HG--
extra : rebase_source : d6d053e1ae11288f4bfc5459993564ed6ba22133
2018-03-20 10:01:27 -04:00
Kartikaya Gupta 8848975da9 Bug 1441324 - Move the APZCTreeManager initialization for the GPU process to CompositorBridgeParent initialization. r=rhunt
This is important because the RecvInitialize method in CompositorBridgeParent
is run via a sync IPC message, and so we are guaranteed that when return to the
caller in the UI process, the APZCTreeManager will have been created. This
ensures that when we create the APZInputBridge actors (which will happen on a
different top-level protocol, but be triggered after the sync RecvInitialize
is complete) we know that the concrete APZCTreeManager is ready for use.

MozReview-Commit-ID: KYDyJNXxQJm

--HG--
extra : rebase_source : f7bbd000a94e405322ceaed6823693e4a95c81d4
2018-03-16 16:28:18 -04:00
Kartikaya Gupta 99522f2154 Bug 1258238 - Remove code that displays visibility visualization on the APZ minimap. r=mattwoodrow
This code was originally added to debug the frame visibility code.
However it wasn't architected correctly and makes the compositor use an
untrusted layers id from content. Instead of fixing this I'd rather just
delete it, since it's a big pile of code that is basically a debugging
tool that nobody owns anymore.

MozReview-Commit-ID: nPZqVeYsFp
2018-03-12 14:17:34 -04:00
Ryan Hunt 084c9b6f4c Allocate TextureReadLock at TextureClient creation and drop file handles immediately after. (bug 1416726, r=aosmond)
This changes the lifecycle and API for TextureReadLock to fix file descriptor exhaustion
crashes. These changes are partially superficial and mostly align the API of TextureReadLocks
with their actual usage.

The changes are:

1. Create the TextureReadLock in the TextureClient constructor so it's available before IPC creation
    a. This is superficial as EnableReadLock was always called before IPC creation
2. Send the ReadLockDescriptor in the PTextureConstructor message and close the file handle
3. Receive the ReadLockDescriptor in TextureHost and close the file handle
4. Send a boolean flag in layer transactions if the texture is read locked instead of a descriptor
5. Use a boolean flag in TextureHost to determine if the ReadLock must be unlocked instead of a nullptr

I believe that we can remove the InitReadLocks code from LayerTransaction as that was added to
prevent file descriptor limits in IPDL messages and is no longer needed with this change. But
that is a non-essential change and this patch is already big enough.

MozReview-Commit-ID: DzHujrOQejH

--HG--
extra : rebase_source : 3bdd7c9bc8edfdc386faad8a9e59ad7dc18ed91d
2018-03-12 08:10:13 -05:00
Kartikaya Gupta f42d692541 Bug 1444374 - Make the LayerTransactionParent's mId always nonzero. r=mattwoodrow
We can easily populate the mId with the correct layers id, which is the
root layer tree id from the CompositorBridgeParent. This eliminates a
bunch of special-case handling.

MozReview-Commit-ID: FEkboAGEhYO

--HG--
extra : rebase_source : 01e73d516e5742d586cbf6d8b6bc5c9f7d64f141
2018-03-09 08:45:26 -05:00
Brindusan Cristian eb51abf4fb Merge inbound to mozilla-central. a=merge 2018-03-08 20:00:36 +02:00
Nicolas Silva 0405d57c60 Bug 1352877 - Assert that the global compositor map is accessed on the right threads. r=mattwoodrow 2018-03-08 09:56:11 +01:00
Kartikaya Gupta a205ba0c5f Bug 1443301 - Stop exposing mApzcTreeManager from CompositorBridgeParent. r=botond
MozReview-Commit-ID: 5Dq0HzLImTz

--HG--
extra : rebase_source : 9329303f382fa94b0a2f05226ad5e993c83490e6
2018-03-07 17:34:11 -05:00
Kartikaya Gupta eb67d6cb7b Bug 1443301 - Update dynamic toolbar init codepath to not need an APZCTreeManager. r=botond
MozReview-Commit-ID: BthTS5k1PDW

--HG--
extra : rebase_source : 9f26d5e40f2ce4979cf55018844271350f11a6fa
2018-03-07 17:34:11 -05:00
Kartikaya Gupta ff4a47d56e Bug 1443187 - Avoid crashing if a previously-uncomposited layer tree gets adopted. r=botond
MozReview-Commit-ID: FZYwS7IwdKq

--HG--
extra : rebase_source : ea7b093df17887af841cb4ccdd64d47a69c016ad
2018-03-07 16:41:44 -05:00
Kartikaya Gupta 45d31fa895 Bug 1442627 - Stop exporting APZCTreeManager.h in mozilla/layers/. r=botond
MozReview-Commit-ID: GC5fSWOYtF5

--HG--
extra : rebase_source : e2dfe679595bf9208e082699a99375cd509b66e3
2018-03-06 10:25:39 -05:00
Kartikaya Gupta d437c0bee5 Bug 1442627 - Reduce exposure of the APZCTreeManager. r=botond
Callers should be using one of the more specific subinterfaces like
IAPZCTreeManager (for controller-API methods) or APZSampler (for
sampler-API methods). There's also a bunch of android-specific
dynamic toolbar code that uses this function - I don't want to
deal with that right now, so instead of removing it entirely we can just
make it Android-only.

MozReview-Commit-ID: I8DYWLYoFgP

--HG--
extra : rebase_source : 75e05825194f9c6843506bb5d82e1a0c6e2b08bb
2018-03-06 10:25:38 -05:00
Kartikaya Gupta 6107f5de3d Bug 1442627 - Add new APZSampler APIs to set the test scroll offset and zoom. r=botond
MozReview-Commit-ID: DrH1D42jfJx

--HG--
extra : rebase_source : 22c2546a8188c871bf106d5883452a1be32c482e
2018-03-06 10:25:37 -05:00
Kartikaya Gupta 551f604b60 Bug 1442627 - Don't use GetAPZCTreeManager in CrossProcessCompositorBridgeParent. r=botond
Although CrossProcessCompositorBridgeParent still needs to create a
dummy APZCTreeManager of its own in place, we can at least stop it from
grabbing the "real" APZCTreeManager from CompositorBridgeParent, which
allows access to methods that might not be properly guarded with respect
to thread safety.

MozReview-Commit-ID: Btvez3OkFPs

--HG--
extra : rebase_source : a4bec1769ff2fb899bb2e65f99f8e715f9a94c44
2018-03-06 10:25:36 -05:00
Kartikaya Gupta 7bb7b24179 Bug 1441916 - Introduce an APZSampler interface for APZCTreeManager. r=botond
This interface should be used for accessing any sampler-thread functions
on APZCTreeManager. Eventually the interface will handle thread
delegation so that if it is called from a thread that is not the sampler
thread it will redirect the calls appropriately. For now it just allows
to logically group the public APZCTreeManager methods that are to be run
on the sampler thread.

MozReview-Commit-ID: GArPvjfuYYr

--HG--
extra : rebase_source : 884cf6c3ce00f3df8ffe7dfa5fc12ef971f3cefc
2018-03-01 23:00:41 -05:00
Kartikaya Gupta 3565e0cee9 Bug 1441916 - Modify the static GetAPZCTreeManager to return an IAPZCTreeManager. r=botond
This static function has only two call sites. One (in GPUProcessManager)
is unused, so it can be removed. The other (in
InProcessCompositorSession) takes the returned APZCTreeManager and
exposes it as an IAPZCTreeManager. Instead of doing this, we can simply
expose it as an IAPZCTreeManager from CompositorBridgeParent itself, to
reduce the number of places that can potentially grab a handle to the
APZCTreeManager.

MozReview-Commit-ID: BjLf6GSsnKz

--HG--
extra : rebase_source : ab24190a12053db06192fab4d1b7a932fe2d1724
2018-03-01 23:00:41 -05:00
Kartikaya Gupta bad638dcd9 Bug 1441916 - Introduce the notion of the APZ sampler thread. r=botond
The sampler thread is similar to the controller thread in that it doesn't
correspond to a particular actual thread, but instead introduces an
abstraction that allows us to reason about code flow and data ownership
that is logically grouped on a single thread. For now the sampler thread
remains mapped to the compositor thread, but eventually we will allow
it to be render backend thread when webrender is enabled.

MozReview-Commit-ID: D6i2t5lDvkv

--HG--
extra : rebase_source : 06211ad878973c76ca3fd618386bbbd0cfdd4821
2018-03-01 23:00:41 -05:00
Kartikaya Gupta 1f2c9f3565 Bug 1441916 - Move APZTestData from the LayerTreeState structure into the APZ. r=botond
This encapsulates the APZTestData better inside APZCTreeManager, which
we will want once we allow the hit-test tree update to happen on a
thread other than the compositor thread.

MozReview-Commit-ID: 66uSsagVfEu

--HG--
extra : rebase_source : 8e6ae809bfa0dde4e0e5fb2e321dd315174eafd6
2018-03-01 23:00:40 -05:00
Kartikaya Gupta 728f8af857 Bug 1441916 - Add hooks in APZCTreeManager to respond to layer tree changes. r=botond
MozReview-Commit-ID: 4dDYQ1YGOO

--HG--
extra : rebase_source : 819e53bde7b1ebf4a6d9d5df0f0f96956c0d0006
2018-03-01 23:00:40 -05:00
Nicolas Silva f943a00bf6 Bug 1436058 - Remove async image pipelines when the renderer notifies pipelines removed. r=kats
Patch originally attached to - and reviewed by sotaro on - bug 1432708.

MozReview-Commit-ID: LNWHtuFTPG5

--HG--
extra : rebase_source : c1694476cb454d914f2cfe3ec7cf55aaa0aacd4c
2018-02-12 11:37:02 -05:00
Kartikaya Gupta 50f41ff36b Bug 1435248 - Fix function naming. r=nical
It looks like the call chain is called ScheduleComposite on the client
LayerManager API, but then for some reason the functions in the IPDL
bridges are called ForceComposite, and then they eventually call the
ScheduleComposition function on the CompositorVsyncScheduler. This is
silly, so I renamed the IPDL bridge functions to ScheduleComposite as
well to be consistent.

MozReview-Commit-ID: D7bWpASaEtb

--HG--
extra : rebase_source : ecb0494d9461bd4ada48bfb602e7b518f0601c1b
2018-02-02 08:57:35 -05:00
Kartikaya Gupta f2f96f5b92 Bug 1435248 - Use a Maybe<TimeStamp> instead of a bool+TimeStamp. r=nical
Minor refactoring, no functional changes.

MozReview-Commit-ID: Ct8SBxrTz8Y

--HG--
extra : rebase_source : 22556c57ec50fefa23ff8aea18815afadda0c8fa
2018-02-02 08:57:35 -05:00
Kartikaya Gupta 42945c908e Bug 1435282 - Make SetTestSampleTime force a sync flush. r=sotaro
SetTestSampleTime is called from tests via the advanceTimeAndRefresh API
on DOMWindowUtils, and the expectation is that after it is done, the
time has been advanced and a composite has happened. So we need to
ensure that is the case with WebRender as well. This fixes the issue I
was seeing with test_group_hittest.html and makes it pass.

MozReview-Commit-ID: 86l9mTTwD2v

--HG--
extra : rebase_source : d2921fb0f9b09f4366fb516e4a6254a7f13f3e4e
2018-02-02 10:48:25 -05:00
Kartikaya Gupta b2e6e6deb1 Bug 1435282 - Don't force the render transaction to happen immediately if we're doing an async flush. r=sotaro
This splits the FlushRendering function into sync and async versions
just for a bit more clarity. In the async version we don't want to set
the mForceRendering flag at all because we don't need to force a
rendering - if there is one already pending then that's good enough. And
anyway in practice the async version seems to only ever be invoked by
CompositorBridgeParent::SetTestSampleTime which I'll be changing in the
next patch.

MozReview-Commit-ID: 4cdU0U5B1pp

--HG--
extra : rebase_source : d7842844fca758d53121e3326d8da7fb7592ad8b
2018-02-02 10:48:25 -05:00
Kartikaya Gupta f56bc3a093 Bug 1435022 - Remove useless code (mExpectedComposeStartTime is never assigned). r=sotaro
MozReview-Commit-ID: LEgR6JFy0Ys

--HG--
extra : rebase_source : 6c46a9868c219ab655eee4d7674ffe86a4fe4a01
2018-02-01 16:29:07 -05:00
Kartikaya Gupta 28f8d7953e Bug 1435022 - Remove the ResumeComposition function from the vsync scheduler. r=sotaro
Having a resume function without a corresponding pause function seems
silly. And the implementation of the function is the same as doing a
force-compose, which is what the call site is intending to do. So we can
just remove this function and do a force-compose instead.

MozReview-Commit-ID: LimMYQhAuEk

--HG--
extra : rebase_source : f10e43c4c4a6f67162b1b473de6c23d8dbdc7a8f
2018-02-01 16:28:50 -05:00
Kartikaya Gupta a48a892756 Bug 1432635 - When advancing the test time, trigger a rendering flush to WR. r=sotaro
MozReview-Commit-ID: UtqGoOnobm

--HG--
extra : rebase_source : e3f3f135138014a4ed8c4bed23cca18c146995c1
2018-01-23 17:20:23 -05:00
Nicolas Silva 1f4870e363 Bug 1422820 - Put a limit on the size of Compositors. r=Bas 2018-01-22 11:41:56 +01:00
Andrew Osmond 6f5458a90b Bug 1431130 - Ensure we retain the lock when accessing sLayerIndirectTree off the compositor thread. r=botond
CompositorBridgeParent::GetIndirectShadowTree is meant to be a
compositor thread only method. This however was not enforced with an
assert and over time we began using it on the main thread for simple
accesses. These accesses should generally be safe on the main thread,
depending on the individual access, but not outside the lock
GetIndirectShadowTree holds. As such, a safer variant is provided to
execute a lambda inside the lock context, and the unsafe variant will
assert it is indeed in the compositor thread context.
2018-01-18 07:28:56 -05:00
Nicolas Silva 43644aaded Bug 1425453 - Move more WebRender api calls into transactions. r=kats 2018-01-12 12:24:07 +01:00
Andrew McCreight ab7fa64021 Bug 1410209, part 4 - Add names to some IPC runnables. r=kanru
This patch requires that each instance of IPC's RunnableFunction is
passed in a name, like the non-IPC RunnableFunction.

MozReview-Commit-ID: Atu1W3Rl66S

--HG--
extra : rebase_source : f932d7597a26a3f0c4246b3a95df638860d3d32d
2017-10-27 13:39:28 -07:00
sotaro 78b2129696 Bug 1416533 - Skip to generate frame if there is no update r=nical,kats 2017-11-30 21:38:47 +09:00
Kartikaya Gupta ce6a99a6e8 Bug 1417519 - Add a mechanism for APZ to get the WebRenderAPI instance. r=botond
MozReview-Commit-ID: FhdQhKIfQbw

--HG--
extra : rebase_source : 13c61233da0cb0ce4ed0d7072ac43d53509b222c
2017-11-17 10:54:24 -05:00
Kartikaya Gupta 6946f16436 Bug 1417519 - Don't allow things to get raw pointers to WebRenderAPI. r=sotaro
It seems like a footgun to expose raw pointers to WebRenderAPI which is
a refcounted object. Let's only expose it via refcounting pointers.

MozReview-Commit-ID: AKmTZg2V99r

--HG--
extra : rebase_source : 805f13d56a64bafbcdf3bf4266eec47c70856564
2017-11-17 10:54:24 -05:00
sotaro bce40231ea Bug 1390741 - Use BasicCompositor if widget type does not support acceleration r=aosmond,kats 2017-11-03 16:38:34 +09:00
sotaro 3aac464b5a Bug 1408490 - Fix reinitRendering for deviceReset r=dvander 2017-11-01 11:58:10 +09:00
Daniel Holbert 126bd9e1a4 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: 77D61xpSmIl

--HG--
extra : rebase_source : c6162fa3cf539a07177a19838324bf368faa162b
2017-10-27 16:10:06 -07:00
Coroiu Cristina 9ca76dcb7a Backed out changeset b7a07167905c::2932c914e223 (bug 1406327) for failing in dom/vr/test/mochitest/test_vrController_displayId.html r=backout a=backout on a CLOSED TREE
Backed out changeset 2932c914e223 (bug 1406327)
Backed out changeset cfbc6262a064 (bug 1406327)
Backed out changeset b7a07167905c (bug 1406327)
2017-10-30 14:51:52 +02:00
Daosheng Mu f6e2fb5654 Bug 1406327 - Part 1: Shutdown VR listener thread when no VR content in seconds; r=dvander,kip
MozReview-Commit-ID: AnYJT8WBkI7

--HG--
extra : rebase_source : 373040a7e578e79c4b2ab2bbda8c155c77fdbbc5
2017-10-26 16:51:14 +08:00
Nicholas Nethercote 8a68e6fb83 Bug 1403868 (part 4) - Reduce tools/profiler/public/*.h to almost nothing in non-MOZ_GECKO_PROFILER builds. r=mstange.
Currently the Gecko Profiler defines a moderate amount of stuff when
MOZ_GECKO_PROFILER is undefined. It also #includes various headers, including
JS ones. This is making it difficult to separate Gecko's media stack for
inclusion in Servo.

This patch greatly simplifies how things are exposed. The starting point is:

- GeckoProfiler.h can be #included unconditionally;

- everything else from the profiler must be guarded by MOZ_GECKO_PROFILER.

In practice this introduces way too many #ifdefs, so the patch loosens it by
adding no-op macros for a number of the most common operations.

The net result is that #ifdefs and macros are used a bit more, but almost
nothing is exposed in non-MOZ_GECKO_PROFILER builds (including
ProfilerMarkerPayload.h and GeckoProfiler.h), and understanding what is exposed
is much simpler than before.

Note also that in BHR, ThreadStackHelper is now entirely absent in
non-MOZ_GECKO_PROFILER builds.
2017-10-04 09:11:18 +11:00
sotaro 11c145a7c1 Bug 1394338 - Add WebRender error handling to RendererOGL r=nical 2017-08-30 09:10:22 +09:00
sotaro 6814d355af Bug 1394337 - Fix uninitialized mPipelineId by WebRenderBridgeParent::CreateDestroyed() r=kats
WebRenderBridgeParent holds uninitialized mPipelineId when it was created by WebRenderBridgeParent::CreateDestroyed(). Then when CrossProcessCompositorBridgeParent::DeallocPWebRenderBridgeParent is called for the WebRenderBridgeParent, it will call EraseLayerState with some garbage uninitialized value, and so it will erase some random layer state entry.
2017-08-29 22:41:53 +09:00
Nicolas Silva 9f6f1a7d88 Bug 1390840 - Add prefs to display the debugging view of webrender's texture cache and intermediate targets. r=jrmuizel 2017-08-23 12:00:37 +02:00