Commit graph

393 commits

Author SHA1 Message Date
Andrew Osmond
7b5c6eb801 Bug 1452513 - Avoid issuing transactions with WebRender when the namespace has changed. r=kats
When the namespace changes (e.g. due to a tab move between windows), we
may get stale transaction requests that we need to ignore. In
WebRenderBridgeParent::RecvSetDisplayList, we would automatically send
any unsent transaction data when exiting the method, but this did not
take into account the staleness. This patch ensures we only flush the
data if we actually want it.

The transaction in question that was observed and causing crashes was
UpdateImageBuffer.
2018-08-21 08:29:09 -04:00
sotaro
4c0aee518b Bug 1482032 part 2 - Only register a value for CONTENT_FRAME_TIME if we actually drew something r=mattwoodrow 2018-08-15 14:13:49 +09:00
sotaro
8f19f46520 Bug 1482032 part 1 - A bit clean up of FlushTransactionIdsForEpoch() r=mattwoodrow 2018-08-15 14:13:24 +09:00
sotaro
bf2bee5c8e Bug 1481995 - Remove WebRenderBridgeParent::mForceRendering r=nical 2018-08-10 08:10:11 +09:00
sotaro
92f8dea8a0 Bug 1476846 - Reduce latency of applying async images of video r=nical 2018-08-07 19:12:06 +09:00
Kartikaya Gupta
4e5a308827 Bug 1479939 - Ensure we tell WR to remove the compositable pipelines when clearing resources. r=sotaro
MozReview-Commit-ID: AxuvERUalhb

--HG--
extra : rebase_source : 674a20346c234912f7389d9fc7078c956cf08fc7
2018-08-02 00:17:36 -04:00
Hiroyuki Ikezoe
221a08d59e Bug 1479234 - Drop GetAnimationOpacity and GetAnimationTransform ipc calls. r=boris,froydnj
They are no longer used.

MozReview-Commit-ID: 1SaIkj4ryUF

--HG--
extra : rebase_source : 0666e3f297e9c12f8a024e96944d99c2c301820c
2018-07-31 06:13:15 +09:00
Hiroyuki Ikezoe
94f5f622eb Bug 1479234 - Introduce a generic function to get an animation value on the compositor. r=boris,froydnj
On the compositor we store animation values in a hash table and the hash is
the compositor animation id which is a unique id for each property respectively.
So we can get the corresponding animation value for the given property.

In this patch there are lots of duplicated code, but they will be removed in the
next patch.

MozReview-Commit-ID: 7EboVcculcg

--HG--
extra : rebase_source : 304ea80849af8af72a07437736041aeabbe47eeb
2018-07-31 06:13:15 +09:00
Coroiu Cristina
7634333ced Backed out 4 changesets (bug 1479234) for build bustage at build/src/gfx/vr/ipc/VRLayerChild.cpp on a CLOSED TREE
Backed out changeset 6ecc1666f571 (bug 1479234)
Backed out changeset c3bab1bc97cf (bug 1479234)
Backed out changeset c8c2625a33ba (bug 1479234)
Backed out changeset 2ffc8e9d5686 (bug 1479234)
2018-07-31 00:32:04 +03:00
Hiroyuki Ikezoe
697a9da7aa Bug 1479234 - Drop GetAnimationOpacity and GetAnimationTransform ipc calls. r=boris,froydnj
They are no longer used.

MozReview-Commit-ID: 1SaIkj4ryUF

--HG--
extra : rebase_source : 0666e3f297e9c12f8a024e96944d99c2c301820c
2018-07-31 06:13:15 +09:00
Hiroyuki Ikezoe
23a4443de4 Bug 1479234 - Introduce a generic function to get an animation value on the compositor. r=boris,froydnj
On the compositor we store animation values in a hash table and the hash is
the compositor animation id which is a unique id for each property respectively.
So we can get the corresponding animation value for the given property.

In this patch there are lots of duplicated code, but they will be removed in the
next patch.

MozReview-Commit-ID: 7EboVcculcg

--HG--
extra : rebase_source : 304ea80849af8af72a07437736041aeabbe47eeb
2018-07-31 06:13:15 +09:00
Kartikaya Gupta
3faf3e38d9 Bug 1478016 - Add a strongly-typed LayersObserverEpoch type. r=mattwoodrow
MozReview-Commit-ID: 6fELexXRYeV

--HG--
extra : rebase_source : 0eb028ee9b98199d18421f7ff28433189940fdca
2018-07-30 09:24:50 -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
b154baea17 Bug 1478504 - Inline function only used in a couple of places. r=sotaro
MozReview-Commit-ID: JfOgsxUHSlu

--HG--
extra : rebase_source : bc08909aa478071daf862ba355e2e4df03dfcf00
2018-07-27 09:43:41 -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
Doug Thayer
c0c56d6901 Bug 1265824 - Pass the texture direct mapping info to all texture creating functions r=mattwoodrow
The client side can't get the GL context in CompositorOGL. So, it can't know
the texture direct mapping capability directly. This patch adds the texture
direct mapping info in TextureFactoryIdentifier. Then, the client side could
get the info form the TextureFactoryIdentifier.

MozReview-Commit-ID: KEazDVg0p9Y

--HG--
extra : rebase_source : 09ce1065cd076a3a5dc276f93837d608443c60a1
2018-05-02 18:20:25 -07:00
Nicolas Silva
6d4507f6ff Bug 1455422 - Implement the new blob image rasterization hooks. r=kats, gankro 2018-07-19 16:33:05 -04:00
sotaro
8b12e2f10c Bug 1476876 - Make FlushRendering async if DComp is used on Windows with WebRender r=nical 2018-07-20 22:58:40 +09:00
sotaro
432fb44cee Bug 1475187 - Remove AsyncImagePipelineManager::ApplyAsyncImages() call from WebRenderBridgeParent::RecvSetDisplayList() r=kats 2018-07-19 07:51:37 +09:00
Kartikaya Gupta
dc1007a996 Bug 1471962 - Flush scene builds when flushing rendering. r=jrmuizel
MozReview-Commit-ID: 1BqhTG1u3nT

--HG--
extra : rebase_source : 031ad412d1f08b4658ad19a6e0d331562665b69a
2018-07-17 11:34:31 -04:00
Andrew Osmond
7fb17ddb91 Bug 1469964 - Part 1. Expose WebRender plumbing for partial updates for external images. r=nical 2018-07-12 11:43:09 -04:00
sotaro
12703134b4 Bug 1460515 - Reuse more image keys at WebRenderImageData::UpdateImageKey() r=nical 2018-07-11 17:45:28 +09:00
Nicolas Silva
4ae96a4caa Bug 1474576 - Remove the async scene building pref. 2018-07-10 14:49:21 +02:00
sotaro
aa35629fdf Bug 1474229 - Use more unordered_map/unordered_set in WebRenderBridgeParent r=nical 2018-07-10 11:06:08 +09:00
sotaro
610a1f38df Bug 1473815 - Simplify WebRenderBridgeParent::mAnimStorage iteration code r=nical 2018-07-07 09:30:50 +09:00
sotaro
3acc79b45a Bug 1472951 - Remove ExternalImageId allocation for ImageClient r=nical 2018-07-06 21:25:33 +09:00
Gurzau Raul
ecaa52212e Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-07-04 19:33:40 +03: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
36ba7ed8eb Bug 1470528 - Add IsRootWebrenderBridgeParent method. r=kats
This commit adds a helper function for determining if the WebRenderBridgeParent
is for a content process and replaces uses with it appropriately.

MozReview-Commit-ID: 6YZhjYEYS3P

--HG--
extra : rebase_source : 97b0a86c4a2905d098ab199d6d1a1fd00c58a46d
2018-06-26 13:37:31 -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
5ca70b4c61 Bug 1470528 - Add IsRootWebrenderBridgeParent method. r=kats
This commit adds a helper function for determining if the WebRenderBridgeParent
is for a content process and replaces uses with it appropriately.

MozReview-Commit-ID: 6YZhjYEYS3P

--HG--
extra : rebase_source : 8ecb1f9146376ac84b84680a5a3454200c940d6a
2018-06-26 13:37:31 -05:00
sotaro
6bfc2aa91f Bug 1472600 - Update SyncHandle when Tab is moved between windows r=nical 2018-07-03 08:43:17 +09:00
Kartikaya Gupta
7dd8ea5edc Bug 1470901 - Record scene build, scene swap, and render times in telemetry. r=sotaro
MozReview-Commit-ID: 1a6pqa0sSrU

--HG--
extra : rebase_source : d00f3f4d8d8df889d4b3dc62dd1d5f797093c07a
2018-07-04 07:52:22 -04:00
Kartikaya Gupta
19dbb3ce5e Bug 1471047 - Ensure the DidComposite start timestamp for WebRender reflects the start of the compositor thread work. r=rhunt
MozReview-Commit-ID: Aya91LtDVZA

--HG--
extra : rebase_source : 3e063e914097b64cbb2fbbb30083a940d0d07190
2018-06-25 17:37:35 -04:00
Kartikaya Gupta
3aa8404841 Bug 1463911 - Record the COMPOSITE_TIME telemetry probe for the WR codepath. r=sotaro
On the non-WR codepath, the COMPOSITE_TIME probe records the time spent
in CompositorBridgeParent::ComposeToTarget, which does all the
compositing work from vsync to when stuff shows up on the screen. The
equivalent on the WR codepath is spread over multiple threads, but the
start is in WebRenderBridgeParent::ComposeToTarget and the end is when
we decrement the pending frame count in RenderThread. So we can
instrument those sites to record the interval.

MozReview-Commit-ID: 5EMUzBT1f6x

--HG--
extra : rebase_source : eafa7ea9931a3d3fb17b95dc9b9e4aa4ff9ff566
2018-06-25 10:55:26 -04:00
sotaro
771f6241c0 Bug 1470090 - Fix LayerObserverEpoch handling r=nical 2018-06-21 22:39:45 +09:00
Kartikaya Gupta
28ebbe606f Bug 1465784 - Remove unnecessary render step with async-scene-building. r=sotaro
MozReview-Commit-ID: 8iOQHLhlcjA

--HG--
extra : rebase_source : 4dab621c8364d719ce895f6ab62d16c73b12bee7
2018-06-06 16:45:06 -04: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
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
659df77837 Bug 1452845 - Fix up snapshotting implementation with async-scene-building enabled. r=botond,jrmuizel
This updates the not-really-correct code to flush the WR pipeline before
doing a readback. It now uses the flushing functions introduced in bug
1417784 to ensure things are flushed properly.

MozReview-Commit-ID: 90BZuLKcjUi

--HG--
extra : rebase_source : 2180aa0ac7ff7b46467e0c24094fcc99479120f7
2018-05-24 16:16:00 -04:00
Kartikaya Gupta
1832f1798c Bug 1417784 - Properly implement SyncWithCompositor for WebRender. r=froydnj,sotaro
This defines three flushing functions that flush different parts of the
WR pipeline. Using all three guarantees that everything sent to WR will
have been flushed. This is what we need to do in SyncWithCompositor to
ensure that it meets the API contract.

In addition, this patch updates the existing FlushRendering function to
use the new functions (no functional changes intended here).

MozReview-Commit-ID: GzxwpF4JT04

--HG--
extra : rebase_source : 1a8cf434d1280902906da257ae63751da7ffd114
2018-05-28 11:29:52 -04:00
Kartikaya Gupta
d07e6d261b Bug 1461122 - Clean up the composition flow for empty transactions. r=sotaro
This is mostly just refactoring to make the code more understandable. However,
there are a couple of functional changes:
- If we have scroll offset updates we now schedule a composite instead of
  sending the DidComposite right away. This is needed because we want to
  actually composite the scroll offset change.
- If there are WebRenderParentCommands provided, we process them and update the
  epoch in a single transaction, instead of splitting it across two transactions
  for no good reason.

MozReview-Commit-ID: 2HCa19EGxUD

--HG--
extra : rebase_source : f7cdc1b46fbca96b2124582f29c791f8944c1fc9
2018-05-15 08:49:34 -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
8677ec2d23 Bug 1461122 - Clean up the composition flow for empty transactions. r=sotaro
This is mostly just refactoring to make the code more understandable. However,
there are a couple of functional changes:
- If we have scroll offset updates we now schedule a composite instead of
  sending the DidComposite right away. This is needed because we want to
  actually composite the scroll offset change.
- If there are WebRenderParentCommands provided, we process them and update the
  epoch in a single transaction, instead of splitting it across two transactions
  for no good reason.

MozReview-Commit-ID: 2HCa19EGxUD

--HG--
extra : rebase_source : e5643b83914b47889e4bde6c0f8658fedb3d54fc
2018-05-14 13:19:13 -04:00
Kartikaya Gupta
d067a7cdae Bug 1452390 - Implement paint-skipping support in WebRender. r=botond
The majority of this patch is just plumbing. The interesting parts are
in WebRenderLayerManager and APZUpdater/WebRenderScrollData. Unlike
ClientLayerManager, which updates the FrameMetrics on the client side
and sends the modified version over to the compositor, this WR version
just sends the update info over to the compositor, which then applies
the update to the metrics saved in APZUpdater before triggering the
hit-testing tree rebuild.

MozReview-Commit-ID: 4latUMa8RFw

--HG--
extra : rebase_source : d0aeaf5a9c8107bbcaf8b0da6d68a0f47f455be5
2018-05-11 21:18:22 -04:00
Kartikaya Gupta
2b4b8a09ab Bug 1457466 - Make the GenerateFrame transaction bypass the scene builder thread. r=nical
This allows frames to be generated by the render backend thread even
while the scene builder thread is busy with a long scene build. The
GenerateFrame transaction also contains APZ and OMTA information, so
this allows the user to scroll and view OMTAnimations during long scene
builds.

MozReview-Commit-ID: KG5YC2KwIaH

--HG--
extra : rebase_source : 3ba559aa22a3a036a3b3a034ea20caacdc8c864a
2018-05-11 09:09:19 -04:00
Hiroyuki Ikezoe
8a0839c09a Bug 1456679 - Don't set non-animated values as AnimatedValue in delay phase. r=kats
We no longer need them since in the previous commit we make sure subsequent
ticks happens for animations in delay phase.

MozReview-Commit-ID: F68wCCsCEiE

--HG--
extra : rebase_source : d6ebe9bfa90a767154cea04255dbf4a5403674fe
2018-05-08 15:59:01 +09:00
Hiroyuki Ikezoe
56631db5d6 Bug 1456679 - Update the previous timestamp with the current timestamp even if there are only delayed phase animations. r=kats
mAnimStorage->AnimatedValueCount() returns zero in the case where all
animations are in delay phase, even in such case, we should update the previous
timestamp.

MozReview-Commit-ID: 5Dds1YjfVh9

--HG--
extra : rebase_source : 759b7b4d9e5aa23542a31593674683fbef2dbc47
2018-05-08 15:58:54 +09:00
Hiroyuki Ikezoe
b154a976cd Bug 1456679 - Make SampleAnimations return boolean to tell there is any animations even if the animation in delay phase. r=kats
If the animation is in delay phase, we shouldn't produce any values for the
animation but we have to make sure subsequent ticks happen in order to the time
when the animation starts.  So what we should do here is that

1) Make AnimationHelper::SampleAnimations() return boolean, return true if
   there is any animation.
2) Schedule the next tick if AnimationHelper::SampleAnimations return true

This setup is equivalent to what we do non-WebRender.

So that we don't need to set non-animated value as AnimatedValue for delay
phase to make subsequent ticks happen for the delay phase animations.  The
non-animated value will be dropped in the next patch.

MozReview-Commit-ID: IwltLGgvT7K

--HG--
extra : rebase_source : f2c59cb3bdb3affc5846e65ccbaad7dbc069d0ad
2018-05-08 15:48:27 +09:00