Commit Graph

184 Commits

Author SHA1 Message Date
Kartikaya Gupta
4cb7167284 Bug 1459714 - Use a single transaction for all things associated with a new display list. r=sotaro
This ensures the commands to delete compositables are received by WR in the same
transaction as the updates to the display list that removes the references to
those compositables. Otherwise, WR can try to do a scene build on the intermediate
state which results in missing pipeline errors.

MozReview-Commit-ID: ByOHCFWSSjt

--HG--
extra : rebase_source : bcc0f129cbd75e3e9e3543236591b22687d39090
2018-05-08 08:49:44 -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
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
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 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
Dzmitry Malyshau
05561ae950 Bug 1433139 - WebRender capture integration on Nightly. r=mikedeboer
MozReview-Commit-ID: 6oIUlPSfLMg
2018-01-26 10:09:30 -05:00
Kartikaya Gupta
b9bc1f73c5 Back out cset 75b5af791006 (bug 1433139) for OS X debug mochitest-chrome-3 failure. r=me 2018-01-26 11:31:34 -05:00
Dzmitry Malyshau
90b1205b68 Bug 1433139 - WebRender capture integration on Nightly. r=mikedeboer
MozReview-Commit-ID: 6oIUlPSfLMg
2018-01-26 10:09:30 -05:00
Kartikaya Gupta
8903b49768 Bug 1429951 - Propagate the non-premultiplied flag for textures to WR. r=sotaro
MozReview-Commit-ID: Vd5n5e7XuW

--HG--
extra : rebase_source : ebd563dd785d99a9623906554dfe8ccd507930b4
2018-01-17 12:55:40 -05:00
Kartikaya Gupta
c017160218 Bug 1430660 - Move the APZ update of scroll layer positions into a transaction. r=nical
MozReview-Commit-ID: 45ijEtB1C0Z

--HG--
extra : rebase_source : b700ad68fdc44096dc0348bf1badf94dc993d36f
2018-01-17 11:19:39 -05:00
Brindusan Cristian
5b9b45cdbc Backed out changeset 21f6b322e9a2 (bug 1430660) for build bustage on webrender_bindings/RenderThread.cpp(475) on a CLOSED TREE 2018-01-17 16:21:15 +02:00
Kartikaya Gupta
e8bef6adc6 Bug 1430660 - Move the APZ update of scroll layer positions into a transaction. r=nical
MozReview-Commit-ID: 4fd3FM1K9T3

--HG--
extra : rebase_source : 94235d274a8c4cde254fa73e8eef7a3b34ff59da
2018-01-16 15:33:34 -05:00
Nicolas Silva
43644aaded Bug 1425453 - Move more WebRender api calls into transactions. r=kats 2018-01-12 12:24:07 +01:00
Nicolas Silva
e9e30c02c6 Bug 1425453 - Bindings for WebRender's transaction API. r=kats 2018-01-12 12:23:59 +01:00
Ryan Hunt
20789635c3 Generate webrender_ffi_generated with cbindgen:0.3.3 (bug 1428142, r=nical)
--HG--
extra : rebase_source : 930fc29308f193d9e3b54495508fb6101806bac5
extra : histedit_source : 01d64855b96776b623a248a85ee96febfdc0edfd%2C38c52cb3034b777d66de02ec5041b2d08f4bb272
2018-01-04 12:23:34 -06:00
Kartikaya Gupta
d3646ab324 Bug 1423669 - Make WebRenderAPI refcounting threadsafe for use on the APZ controller thread. r=sotaro
MozReview-Commit-ID: 4VUQz48QT9t

--HG--
extra : rebase_source : 43dc64fcfbd73a31aa0b13dba9140295dc72f9cb
2017-12-06 13:36:58 -05:00
Sebastian Hengst
7cbd9c3050 merge mozilla-inbound to mozilla-central. r=merge a=merge 2017-12-01 01:25:54 +02:00
Jeff Muizelaar
fd288de282 Bug 1379680. Move the displaylist ByteBuf into a Vec instead of copying. r=kats
This eliminates a copy of the displaylist on the compositor thread.
2017-11-30 15:12:14 -05:00
Kartikaya Gupta
a722a826b0 Bug 1389146 - Add code to dump the webrender display list, behind a compile guard. r=jrmuizel
MozReview-Commit-ID: 1tWhE4A7PCa

--HG--
extra : rebase_source : 2f161e7c488832055d8811f94751e3623c16b490
2017-11-28 15:28:08 -05:00
Kartikaya Gupta
a02e29e13b Bug 1389149 - Add WR bindings for setting hit-test info and doing hit-tests. r=mstange
This exposes some functions on wr::DisplayListBuilder to set hit-test
info and to do hit-tests.

The mechanism to set hit-test info is made a little more generic than is
actually used in this patchset, because doing it this way allows for
more optimization possibilities.
Specifically, the API allows setting some hit-testing state which is then
applied to all display items that are created until that state is
updated or cleared. An alternative would be to specify the hit-testing
state explicitly when creating particular display items; however doing
that would force the call sites that create the display items to compute
or obtain the hit-testing state, which would make the code less
encapsulated and harder to refactor/optimize.

MozReview-Commit-ID: EJoCFv83iu8

--HG--
extra : rebase_source : d2a117a52144f76dcc312de2a4047298e78135cb
2017-11-15 11:39:44 -05:00
peter chang
8d32c73914 Bug 1410334 - Create correct animation properties based on WrAnimationProperty info, r=kats
MozReview-Commit-ID: 6LNbwQd9IfX

--HG--
extra : rebase_source : 2b53786ae996237bef7bf8100087b3f48667d718
2017-11-15 16:09:21 +08:00
Morris Tseng
78bddf84f9 Bug 1342762 - Remove pipeline in RemovePipelineIdForCompositable. r=nical
MozReview-Commit-ID: 29NrWHCGR5V

--HG--
extra : rebase_source : 25a4fc2f1abef15dbf5515516a45a34079acc8dd
2017-11-13 17:32:23 +08:00
JerryShih
7fa50ff43a Bug 1415816 - integrate gfxCriticalNote/gfxCriticalError for WebRender in gpu process. r=kats
MozReview-Commit-ID: 3Mey7XRYRn6
2017-11-10 07:30:53 -05:00
Kartikaya Gupta
c832839650 Bug 1411627 - Send the applied offset for sticky frames to WR. r=mstange
There are cases where we do a main-thread paint at a scroll position
where sticky offsets have been applied in order to keep sticky items
visually unmoving. From that paint, it's possible to do an async-scroll
in the direction that reduces the sticky offset. In order for WR to
handle this case properly we need to tell WR how much of a sticky offset
was already applied on the main thread.

MozReview-Commit-ID: 79DsfPpsIfA

--HG--
extra : rebase_source : e39316702cff3bd4ee6721c7503a1a9267734cd8
2017-11-07 10:16:48 -05:00
Lee Salzman
f11218633f Bug 1403198 - send font descriptors to WR instead of raw fonts where possible. r=jrmuizel
MozReview-Commit-ID: DYcaO3fE1fc
2017-11-06 20:19:46 -05:00
Markus Stange
e691e26bec Bug 1386162 - Implement nsDisplayClearBackground using push_clear_rect. r=kats
MozReview-Commit-ID: DlGA7KuZzm0

--HG--
extra : rebase_source : 2c2b402c7f9f2df8cc7cc5e80aa591f3aae946ef
extra : source : 4003a8f5c3c8bf0146183eca287c7ee162bd3d57
2017-10-31 11:31:00 -04:00
Kartikaya Gupta
3a399cf5e5 Bug 1412280 - Update sticky code for API change in WR PR 1940. r=jrmuizel
MozReview-Commit-ID: 2I8wpe3Bt1y

--HG--
extra : rebase_source : 5056aee8978c9bd5c51724ec909125de318f04ad
2017-10-31 09:17:22 -04: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
Kartikaya Gupta
8e9c8a8efc Bug 1409508 - Handle another clip edge case. r=mstange
This edge case happens when:
- we have a display item A nested inside another display item B
- B has pushed an out-of-band clip, and
- A's clip chain doesn't connect directly to the end of B's clip chain
  but instead connects somewhere farther up the clip chain
See comments in the patch for more details.

MozReview-Commit-ID: 4mCCaVUQuvH

--HG--
extra : rebase_source : 1601a8f0c586d618d395b4e20086b9ecd318945b
2017-10-25 15:05:20 -04:00
Alexis Beingessner
168deb7b2b Bug 1401653 - fixup webrender text-decoration bindings. r=jrmuizel
This does 3 things that were all a bit too intermixed to split out cleanly:

1. Teaches TextDrawTarget to handle rectangular clips (while also completely
forbidding other ones). This is necessary to handle how gecko "overdraws"
decorations with clips to create the illusion of continuous lines when they're
actually made out of multiple lines, possibly from different display items
with different lines. Previously gecko *was* handing these clips to
TextDrawTarget to use these clips, but we were just ignoring them.

This is also necessary work to support partial glyphs natively (which apply
rectangular clips to glyphs). Also note that this currently causes a bug
in webrender if combined with zero-blur shadows, but it's not a regression
since we already mishandle clipped decorations. I will work on fixing this
upstream.

2. Changes the intermediate representation of lines from the old webrender
format to a rect-based one. This is in preperation for webrender adopting
that format in a future update.

3. Changes the way wavy lines are processed, correcting some errors in the
old wavy line bindings that lead to them being positioned incorrectly. Also
introduces a wavyLineThickness property that the will be required in a
future webrender update. Wavy lines are unlike any other line, so it's
ultimately desirable to distinguish them.

The net result of these changes is that a companion upstream change (webrender#1923)
will make decoration rendering nearly identical to gecko, and much nicer.
However the clipped shadows issue will need to be seperately resolved before
actually closing this issue.

MozReview-Commit-ID: 6O2wLA6bU3C

--HG--
extra : rebase_source : 17254c45145229b75f77f87f85874e66e6edd05e
2017-10-24 12:44:38 -04:00
Attila Craciun
1fc19f42dc Backed out 1 changesets (bug 1401653) for failing no matching function for call in src/layout/generic/TextDrawTarget.h:143:43 r=backout on a CLOSED TREE.
Backed out changeset 5055d2703f2f (bug 1401653)
2017-10-25 16:32:17 +03:00
Alexis Beingessner
7d07e76ce2 Bug 1401653 - fixup webrender text-decoration bindings. r=jrmuizel
This does 3 things that were all a bit too intermixed to split out cleanly:

1. Teaches TextDrawTarget to handle rectangular clips (while also completely
forbidding other ones). This is necessary to handle how gecko "overdraws"
decorations with clips to create the illusion of continuous lines when they're
actually made out of multiple lines, possibly from different display items
with different lines. Previously gecko *was* handing these clips to
TextDrawTarget to use these clips, but we were just ignoring them.

This is also necessary work to support partial glyphs natively (which apply
rectangular clips to glyphs). Also note that this currently causes a bug
in webrender if combined with zero-blur shadows, but it's not a regression
since we already mishandle clipped decorations. I will work on fixing this
upstream.

2. Changes the intermediate representation of lines from the old webrender
format to a rect-based one. This is in preperation for webrender adopting
that format in a future update.

3. Changes the way wavy lines are processed, correcting some errors in the
old wavy line bindings that lead to them being positioned incorrectly. Also
introduces a wavyLineThickness property that the will be required in a
future webrender update. Wavy lines are unlike any other line, so it's
ultimately desirable to distinguish them.

The net result of these changes is that a companion upstream change (webrender#1923)
will make decoration rendering nearly identical to gecko, and much nicer.
However the clipped shadows issue will need to be seperately resolved before
actually closing this issue.

MozReview-Commit-ID: 6O2wLA6bU3C

--HG--
extra : rebase_source : 98da45bc7f2eaabd63ae226c505cb1580b5c8500
2017-10-24 12:44:38 -04:00
Attila Craciun
7bcf901c3b Merge inbound to mozilla-central r=merge a=merge 2017-10-25 12:30:28 +03:00
Jeff Muizelaar
faa4cd1783 Bug 1410550. Allow updating a dirty rect of a blob image. r=kats 2017-10-24 18:11:04 -04:00
Kartikaya Gupta
08961382de Bug 1409446 - Treat sticky clips as out-of-band clips. r=ethlin,mstange
MozReview-Commit-ID: C0KEuSrCPEQ

--HG--
extra : rebase_source : b4b42282f37ddbdb4b962ec72571bf280c1c47e4
2017-10-24 15:46:00 -04:00
Kartikaya Gupta
83ac5fdb91 Bug 1409446 - Handle nested display item scenarios. r=mstange
This handles some cases where a nested display item's clip chain
implicitly extends from the wrapper item's clip chain.

MozReview-Commit-ID: DmghxOWi81K

--HG--
extra : rebase_source : 8ec95df64fed247650baf8f5e0c868d1934aa6bc
2017-10-24 15:46:00 -04:00
Kartikaya Gupta
eae58bd759 Bug 1409446 - Modify the extra-clip flag to instead track more useful information. r=ethlin,mstange
Instead of just keeping a count of how many "extra clips" (aka
out-of-band clips) we have pushed, track more complex information for
each clip. In particular, track the display item's normal clip chain, as
well as the clip id of the extra clip that was pushed. This will be
needed to override clip cache information in the next patch.

MozReview-Commit-ID: AWKDTkelhyL

--HG--
extra : rebase_source : 379e38550cf45d54862850f6c4aad0ac488f6ca9
2017-10-24 15:45:59 -04:00
Kartikaya Gupta
26c5991efb Bug 1409446 - Unify the clip stack in WebRenderAPI. r=jrmuizel
By using a variant we can keep a single stack of both clips and
scrollframes, rather than two separate stacks. This is important because
we will want to know how the things are interleaved (e.g. if the last
thing that was pushed was a clip or a scrollframe).

MozReview-Commit-ID: DbhDj2tTq64

--HG--
extra : rebase_source : c591787f31e6ba864178e27197cf6dff42e39a8d
2017-10-24 15:45:58 -04:00
Kartikaya Gupta
d3658ef3fb Bug 1409446 - Remove unused function. r=jrmuizel
We don't use the code to track the parents of each scroll id, so we can
dump it and just keep a set of scroll ids that we've defined to avoid
redefining them.

MozReview-Commit-ID: HY8y7xt9AJ6

--HG--
extra : rebase_source : 681154ae6494330f74c022243237b50d4921813b
2017-10-24 15:45:58 -04:00