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

242 Коммитов

Автор SHA1 Сообщение Дата
Lee Salzman daa9f58360 Bug 1479196 - add support to TextDrawTarget for defining and pushing WR images. r=nical 2018-08-21 12:36:48 -04:00
Nicolas Silva 0805d95b99 Bug 1482109 - Hook the memory pressure observer up with WebRender. r=sotaro
--HG--
extra : rebase_source : e23d9db4ffff5d1994f476e660f7f6cbe52e6ad6
2018-08-20 15:23:54 +02:00
Nicolas Silva 3cea37c9c2 Bug 1469496 - Handle video memory purge with WebRender. r=sotaro 2018-08-10 17:14:57 +02: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
Kartikaya Gupta e750c8c1b4 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
The prefs, when enabled, will dump the gecko DL items followed by the
WR DL items that were generated from that gecko item. This allows us to
easily go from a DOM element with known id/class attributes to e.g. an
ImageKey of an image that was generated for that element.

Also, this logging can be enabled in CI builds just like gecko display-list
dumping, instead of the ifdef that we previously had in WebRenderLayerManager.

MozReview-Commit-ID: Eeo4iO62YY1

--HG--
extra : rebase_source : b4a348b2e8bced976489257b966f70b29c56df25
2018-07-19 15:30:30 -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
Nicolas Silva 4ae96a4caa Bug 1474576 - Remove the async scene building pref. 2018-07-10 14:49:21 +02:00
Martin Robinson 34359c5dd9 Bug 1470125 - Update WR bindings for changes in WR PR 2848. r=Gankro
MozReview-Commit-ID: D2hLIqlnfU6

--HG--
extra : rebase_source : 6a0ef8c6d61ab937695c42224eb3acb0a5e531f7
2018-06-13 15:40:13 -07:00
shindli c83eb1f34f Backed out 3 changesets (bug 1470125) for force-cargo-library-build bustages on a CLOSED TREE
Backed out changeset c6ef35a760ae (bug 1470125)
Backed out changeset cb8bed4a7691 (bug 1470125)
Backed out changeset 82527f62f249 (bug 1470125)
2018-06-28 21:25:33 +03:00
Martin Robinson be65a0bdb1 Bug 1470125 - Update WR bindings for changes in WR PR 2848. r=Gankro
MozReview-Commit-ID: D2hLIqlnfU6

--HG--
extra : rebase_source : 328d76c6c9f428b55c8116fc447f9e3d6a76371a
2018-06-13 15:40:13 -07: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 9b664db1ff Bug 1465935 - Fix hit-testing for fixed-pos items inside iframes. r=mstange
Without this patch, the scrollId for display items inside a fixed-pos
item end as the ASR of the item. In the case of fixed-pos items that are
inside iframes, the ASR is the outer document's root scrollframe. This
means that e.g. wheel-scrolling while over a fixed-pos item inside an
iframe ends up scrolling the outer document's root scrollframe instead
of the iframe's root scrollframe.

In the non-WR codepath, there some APZ machinery that walks up in the
HitTestingTreeNode tree from the hit result, looking to see if that node
has a fixed-pos ancestor, and if so, uses the fixed-pos item's target
APZ as the real hit result. This machinery doesn't exist in WR, because
we don't use the HitTestingTreeNode tree for hit-testing in APZ.
Instead, we need to make sure that the item tag for those display items
already has the appropriate scrollid set.

This patch accomplishes this by introducing a new RAII class that is
pushed into the wr::DisplayListBuilder while we are building display
items inside a nsDisplayFixedPosition, and allows the desired scroll id to
be set on the hit-testing display items.

This behaviour is exercised by test_group_wheelevents, which can now be
enabled with this fix.

MozReview-Commit-ID: L2erPVzJeql

--HG--
extra : rebase_source : 1db630513cb1dc16d4e38649812e81f62c8da99c
2018-06-07 13:06:33 -04:00
Martin Robinson 46bd5d1cf4 Bug 1465058 - Update for API change in WR PR 2756. r=kats
MozReview-Commit-ID: 6Vg0bTpBYVh

--HG--
extra : rebase_source : f9b4f5cdb26d268d7804afb827c7710a05bc56d9
2018-05-16 16:47:08 +02: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 af64629a66 Bug 1417784 - Use a CompositorBridgeParent* instead of a base class pointer. r=sotaro
We do a silent upcast from CompositorBridgeParent* to the base class and
pass it around as a CompositorBridgeParentBase* for no reason. Avoiding
this simplifies the code slightly and avoids virtual function overhead.
We do need to move a couple of functions in CompositorBridgeParent from
protected scope to public scope.

MozReview-Commit-ID: 9Zq3GwxEXpr

--HG--
extra : rebase_source : 67346159e7d99ca7fc2fe0052e85aa6618b50d27
2018-05-28 11:29:41 -04:00
Kartikaya Gupta 0e92bc1c16 Bug 1463416 - Update for API changes in WR PR 2718. r=nical
MozReview-Commit-ID: Ct8krYkLfHL

--HG--
extra : rebase_source : ed01919ad38b66d485ae395621167e059f4ec6d8
2018-05-26 11:09:21 -04:00
Kartikaya Gupta 8e7e2dbdb4 Bug 1454042 - Allow missing pipeline information for cross-process iframes. r=sotaro
We should always have the pipeline information for in-process things like
async images, but for cross-process iframes we might not have the information
right away if the content process doesn't get around to sending it for a while.

MozReview-Commit-ID: 18F5nqilXoV

--HG--
extra : rebase_source : 610046cbaaefb38b8e11bda857fd64a00722df27
2018-05-18 10:31:18 -04:00
Hiroyuki Ikezoe 586992e21b Bug 1460389 - Remove TransactionBuilder::AppendTransformProperties. r=kats
This function is no longer used since we introduced TransactionWrapper class in
bug 1451469.

MozReview-Commit-ID: FGxi6thbxcP

--HG--
extra : rebase_source : ef5628f8bffb5c1fedf6de80056d4ebba41a9edf
2018-05-15 08:59:29 +09: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
Kartikaya Gupta 27baa6b4f2 Bug 1460495 - When sending a transaction, ensure the new transaction that takes its place has the same async-scene-build flag set. r=sotaro
MozReview-Commit-ID: HYwUwqE2P2O

--HG--
extra : rebase_source : 9540a4dc271d51b5d517fb6498d54d0c55eec6c6
2018-05-10 13:05:22 -04:00
Kartikaya Gupta 85e5ccd033 Bug 1458598 - Expose the generated reference frame id for stacking contexts. r=mstange
This is just plumbing, no functional changes yet.

MozReview-Commit-ID: FlmnMVammse

--HG--
extra : rebase_source : edede45a77a829dbd125dc1f18a4c2a4bc8087c1
2018-05-08 09:16:26 -04:00
Martin Robinson 2d70c66a68 Bug 1458870 - Changes necessary to deal with new WebRender nine-patch API from PR 2724. r=jrmuizel
MozReview-Commit-ID: 9217FeM4VJH

--HG--
extra : rebase_source : 72f5ab352a8d70149a2306eed9c7afc87405636e
2018-05-08 10:36:23 -04:00
Kartikaya Gupta 1eb717ccf5 Bug 1377187 - Rewrite the clipping code to use the new clipchain API. r=mstange
The clip chain API in webrender allows us to build the clip state in WR
so that it matches the gecko display list more closely. This patch throws
away ScrollingLayersHelper.* and introduces ClipManager.* which pushes
the clip state to WR using the new method. A quick summary of the new
method is below.

Each display item in gecko has a DisplayItemClipChain which is a chain
of individual clips. The individual clips are defined in WR, and the
clip ids for those clips are put into a WR clip chain using the new
define_clip_chain API. Furthermore, each clip chain can also have a
parent chain, which is used to link a DisplayItemClipChain to the parent
display item's DisplayItemClipChain. This allows the WR clip state to
closely match the structure of the gecko display list clip state,
resulting in more correct behaviour.

There are a few other major changes that are lumped into this patch and
that were tricky to separate into their own patches:
- The collapsing of WrScrollId and WrStickyId into WrClipId. On the WR
  side all the clip ids are treated the same anyway. Trying to preserve
  the arbitrary distinction on the gecko side was resulting in
  increasingly convoluted code, with different kinds of Variant<..>
  types in the method signatures. It was much simpler and resulted in a
  bunch of code deletion to just collapse the types.
- Moving the "override" mechanism from WebRenderAPI to ClipManager. The
  override mechanism (explained in ClipManager.h) was simplified by
  moving it into ClipManager, because it removed the need for tracking
  additional clip stack state in WebRenderAPI.

MozReview-Commit-ID: GGbdFyJGprK

--HG--
extra : rebase_source : baa56ff179e917b0ab5a5c186a3a415761f8050a
2018-05-08 09:08:39 -04:00
Kartikaya Gupta 1f11e1e04e Bug 1377187 - Simplify code to define clips and scroll layers. r=mstange
This is a refactoring that moves the "parent clip id" determination from
bindings.rs into WebRenderAPI.cpp. This should be functionally
identical.

MozReview-Commit-ID: 36rQmsH5E7J

--HG--
extra : rebase_source : f376e71f7681ec3f67e0ab4f2e3035da4edf2a5b
2018-05-08 09:07:30 -04:00
Alexis Beingessner 239a528013 Bug 1435094 - wire up GlyphRasterSpace to nsDisplayTransform. r=kats,mstange
When a transform thinks it's animated we should abandon screen rasterization
and instead favour local rasterization. This produces a more visually
pleasant rendering, as pixel-snapping "wobbles" the text between
frames.

The float scale of GlyphRasterSpace::Local is currently unused, but this
PR tries its best to set it to a reasonable value, based on discussion
with glennw about the intended semantics. We agreed it should specify
the scale *relative* to the parent stacking context, which means it's
just whatever scaling the stacking context's transform applies. It's
possible we'll need to clamp this value or make it properly 2-dimensional
later on.

Some book-keeping is added to StackingContextHelper to ensure that
GlyphRasterSpace::Screen is never requested by a descendent
of a stacking context using GlyphRasterSpace::Local.

nsDisplayMask is changed to use a StackingContextHelper to ensure
rasterSpace is properly propagated.

In addition, this is the first commit making use of cbindgen's new support
for bridging Rust enums natively into C++! This bumps our minimum cbindgen
to 6.0.0 (just released).

MozReview-Commit-ID: 9AlsB6nUheB

--HG--
extra : rebase_source : 247e5b197e998682cb4bb74f6f9319a9a4dd3264
2018-05-03 20:38:37 -04:00
sotaro b482332d39 Bug 1457387 - Remove WrExternalLogHandler r=jrmuizel 2018-05-04 14:31:32 +09:00
Kartikaya Gupta 9d0713c20d Bug 1457448 - Ensure we flush the async scene builder thread before snapshotting. r=nical
MozReview-Commit-ID: 3XTFWiEmk0p

--HG--
extra : rebase_source : 0547263009cfb48bb7f010662d57734ed57f63c7
2018-04-27 10:46:21 -04:00
Noemi Erli 0ec806df24 Backed out changeset f8ad5962fc89 (bug 1435094) bustage in /builds/worker/workspace/build/src/layout/painting/nsDisplayList.cpp on a CLOSED TREE 2018-04-27 04:14:39 +03:00
Alexis Beingessner 4bb2580c85 Bug 1435094 - wire up GlyphRasterSpace to nsDisplayTransform. r=kats,mstange
When a transform thinks it's animated we should abandon screen rasterization
and instead favour local rasterization. This produces a more visually
pleasant rendering, as pixel-snapping "wobbles" the text between
frames.

The float scale of GlyphRasterSpace::Local is currently unused, but this
PR tries its best to set it to a reasonable value, based on discussion
with glennw about the intended semantics. We agreed it should specify
the scale *relative* to the parent stacking context, which means it's
just whatever scaling the stacking context's transform applies. It's
possible we'll need to clamp this value or make it properly 2-dimensional
later on.

Some book-keeping is added to StackingContextHelper to ensure that
GlyphRasterSpace::Screen is never requested by a descendent
of a stacking context using GlyphRasterSpace::Local.

nsDisplayMask is changed to use a StackingContextHelper to ensure
rasterSpace is properly propagated.

In addition, this is the first commit making use of cbindgen's new support
for bridging Rust enums natively into C++! This bumps our minimum cbindgen
to 6.0.0 (just released).

MozReview-Commit-ID: 9AlsB6nUheB

--HG--
extra : rebase_source : 978e51dbedeb1542e0829752b7f828ffeb2872e9
2018-04-25 10:47:34 -04:00
sotaro 1787768767 Bug 1454878 - Update WrExternalLogHandler as to use env_logger r=jrmuizel 2018-04-25 12:05:26 +09:00
Lee Salzman 47222b48e5 Bug 1448703 - clear blob image resources from clear_namespace hook. r=jrmuizel 2018-04-24 22:24:55 -04:00
Andreea Pavel 1d89ab6a3a Backed out changeset 42781c597745 (bug 1448703) cpu process leakcchecks 2018-04-24 06:47:19 +03:00
Lee Salzman d8e6c45ef2 Bug 1448703 - clear blob image resources from clear_namespace hook. r=jrmuizel
MozReview-Commit-ID: 8DinL2bE64O
2018-04-23 21:46:55 -04:00
Kartikaya Gupta adaebffdd8 Bug 1451469 - Add a TransactionWrapper class. r=nical
The TransactionBuilder class comes with a bunch of baggage (it
automatically allocates/deallocates a transaction under the hood) which
we will want to avoid for the RB callbacks into APZ. This patch adds a
lightweight TransactionWrapper class that APZ can use to provide the
async transform info and that will be simpler to use in the callback
from rust code.

MozReview-Commit-ID: 1ywhx4TIzGd

--HG--
extra : rebase_source : 0ac4356554db24806d03b44f5384f9b7341d4255
2018-04-16 17:39:26 -04:00
Kartikaya Gupta cfd585d234 Bug 1453364 - Update scrollbar transforms separately from OMTA transforms. r=nical
Although they still happen in the same transaction, they are done in two
separate frame messages. This results in better encapsulated code on the
C++ side since we don't have to pass around an array of properties, and
will simplify future changes to update these properties at render time
rather than at GenerateFrame time.

MozReview-Commit-ID: 9qUkHX7gmD1

--HG--
extra : rebase_source : 15a319ba270eb1783815c514ae05c6a72e323dac
2018-04-11 15:28:00 -04:00
Alexis Beingessner faa067542e Bug 1412375 - Create a clipped stacking context for nsDisplayMasks. r=kats,mstange
This was only recently made possible by webrender#2600, which introduced special stacking-context
clips

MozReview-Commit-ID: HQAU7IsfDaz

--HG--
extra : rebase_source : 0ac7f0f3f73abdf5b60ca02b37cfaa7abeecb6a3
2018-04-11 13:00:49 -04:00
Kartikaya Gupta fde6e769ba Bug 1449982 - Add the plumbing for scene builder thread interaction. r=nical
This is all the (bidirectional) glue that connects the SceneBuilderHooks
to the APZUpdater.

MozReview-Commit-ID: JIqUaClVa57

--HG--
extra : rebase_source : c6da81e63793570f79cdfa153f6d33d2ac05bdf6
2018-04-10 12:29:55 -04:00
Kartikaya Gupta 4a07281ed3 Bug 1449982 - Introduce pref to control async scene building. r=nical
Until all the pieces are in place, turning on this pref will probably
break horribly. But we need the pref so we can add the rest of the
pieces without enabling them by default.

MozReview-Commit-ID: 7DkcwZgXwhx

--HG--
extra : rebase_source : e1fdef2e9a682028df524f51f767a4d2187410b1
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
Martin Robinson f55533615b Bug 1444904 - Get the root scroll frame id from WebRender r=kats
Instead of hard-cording the root scroll frame id, get the value from
WebRender. This was previously hard-coded to 0, so when WebRender
switched to using 1 for the root scroll frame id, the positioning of
sticky frames were broken in subtle ways. This happened because they
were being parented to a root reference frame (which now uses the 0 id)
instead of the root scroll frame.

MozReview-Commit-ID: 66ArgKHGpWE

--HG--
extra : rebase_source : ff6937bf7fc8d4472eb074d0466c8dcd6fba54a8
2018-03-26 18:13:07 +02:00
Kartikaya Gupta 7d1d15228b Bug 1443152 - Update to cbindgen 0.5.2. r=rhunt
MozReview-Commit-ID: COIPhZvMJK

--HG--
extra : rebase_source : 9687211e6bda9b306d8cdf522145eee132601b18
2018-03-12 16:38:10 -04:00
Martin Robinson ee5a6b3d13 Bug 1440664 - Update gecko WR bindings for API changes in WR PR 2449. r=kats
MozReview-Commit-ID: AUTNkZ36p8b

--HG--
extra : rebase_source : 4452312fca3355f2d8830eb94f317e48777e8248
2018-03-01 16:49:54 -05:00
sotaro 71d9e881b1 Bug 1436020 - Disable WebRender profiler UI during readback r=nical 2018-02-15 11:29:40 +09:00
Kartikaya Gupta bd342342df Bug 1436058 - Update for log 0.4 bump in WR PR 2385. r=jrmuizel
MozReview-Commit-ID: Cxkecg2cTDW

--HG--
extra : rebase_source : 0b049ba3a95dda71f9d6df53ba8f636e30841fee
2018-02-12 11:32:50 -05:00
Dzmitry Malyshau 5852b9f1d6 Bug 1436190: Fixed render frame notification in wake_up(). r=nical
MozReview-Commit-ID: JHBKpAh4YDD
2018-02-08 10:49:25 -05:00
Martin Roinson 90bbf4505c Bug 1435143 - Properly unwrap Maybe<WrScrollId> for the root scroll frame. r=kats
When comparing a Maybe<WrScrollId> to another WrScrollId we need to properly
handle the case where Nothing() signifies the root scroll frame. This is
equivalent to calling scrollId.valueOr(FrameMetrics::NULL_SCROLL_ID), as was
done before WrScrolLId replaced ViewId in the WebRender ScrollingLayersHelper.
We also have DisplayListBuilder::TopmostScrollId always return a value instead
of a Maybe, since an empty clip stack means that the current scroll id is that
of the root scroll frame.

Previously Nothing() was not equivalent to WrScrollId { 0 }, which caused the
ScrollingLayersHelper to fill the mClipAndScroll value and push another
set of clip and scroll nodes onto the WebRender display list builder.

MozReview-Commit-ID: CeatZlRXtuI
2018-02-07 10:01:56 +01:00
Martin Roinson e82c2f1d5c Bug 1434288 - Update gecko for API changes in WR PR 2315. r=kats
MozReview-Commit-ID: 7NfZMXOPaDY

--HG--
extra : rebase_source : 782784b5f01fccd7c22286c6fa7e6ee16bf20be0
2018-01-22 19:29:06 +01:00
Nicolas Silva 082991a7bc Bug 1404477 - Merge ResourceUpdateQueue and TransactionBuilder. r=kats 2018-01-29 14:33:39 +01:00
Nicolas Silva 3f26befbbd Bug 1404477 - WebRender document API bindings. r=kats 2018-01-29 14:33:35 +01:00