Commit Graph

178 Commits

Author SHA1 Message Date
Nicolas Silva
ca2cef1d42 Bug 1393031 - Make ResourceUpdateQueue move-only. r=sotaro 2017-09-04 13:59:17 +02:00
Nicolas Silva
674768a93d Bug 1393031 - Expose webrender resource updates in the C++ wrapper. r=sotaro 2017-09-04 13:59:12 +02:00
Wes Kocher
3f192cf984 Merge m-c to inbound, a=merge
MozReview-Commit-ID: 77Uz3uceUmk
2017-08-31 16:56:23 -07:00
Lee Salzman
e54dd8d30e Bug 1393055 - map ScaledFonts to WebRender FontInstanceKeys. r=jrmuizel
MozReview-Commit-ID: AadEI5CnTZ1
2017-08-30 13:45:11 -04:00
Kartikaya Gupta
165a507153 Bug 1395212 - Avoid computing the entire ScrollMetadata for cases where we just need the scroll id. r=mstange
MozReview-Commit-ID: BEYfq2EqIel
2017-08-30 14:51:19 -04:00
Kartikaya Gupta
02daad2642 Bug 1395212 - Update wr::DisplayListBuilder to expose separate APIs for defining and pushing scroll layers. r=mstange
This makes the DisplayListBuilder scrolling API more consistent with the
clipping API, and allows for more optimization at the call site (in the next
patch).

MozReview-Commit-ID: LdCA7wkXDwF
2017-08-30 14:51:19 -04:00
Kartikaya Gupta
dc8d718a4a Bug 1395212 - Hoist the scroll layer deduplication code out of bindings.rs into wr::DisplayListBuilder. r=mstange
This also splits the wr_dp_push_scroll_layer function in bindings.rs into two
separate functions. This makes the API consistent with clipping, and also allows
for optimizations in the upcoming patches.

MozReview-Commit-ID: IXnOZK0dZm
2017-08-30 14:51:19 -04:00
Kartikaya Gupta
0ce4235ed7 Bug 1394518 - Log the mWrState pointer in WRDL_LOG so we can distinguish the output from different pipelines. r=jrmuizel
MozReview-Commit-ID: A3KDJyBmSCX
2017-08-28 14:20:25 -04:00
Ethan Lin
3da6939088 Bug 1392921 - In TopmostScrollId(), return FrameMetrics::NULL_SCROLL_ID when the scroll id stack is empty. r=kats
MozReview-Commit-ID: 3kmgsisMhW5
2017-08-23 14:46:38 +08:00
Nicolas Silva
f6e2ccd98d 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
Sebastian Hengst
af8a5d3748 Backed out changeset b9c53ad8893b (bug 1390840) 2017-08-21 18:38:22 +02:00
Nicolas Silva
677415026e Bug 1390840 - Add prefs to display the debugging view of webrender's texture cache and intermediate targets. r=jrmuizel 2017-08-21 18:22:56 +02:00
Kartikaya Gupta
2fdf667105 Bug 1390804 - When pushing a mask clip, don't record it in DisplayListBuilder's clip stack. r=ethlin
Recording mask clips in the clip stack changes the value of TopmostClipId()
which confuses the code in ScrollingLayersHelper. The mask clip can be
thought of as an "out-of-band" clip that ScrollingLayersHelper doesn't
need to know about. This patch adds a mechanism for pushing such
"out-of-band" clips without touching the clip stack.

MozReview-Commit-ID: 8Zeqtigk0cj
2017-08-17 13:54:25 -04:00
Alexis Beingessner
17c2751eec Bug 1357545 - handle text-shadows/decorations with webrender (layers-free) r=jrmuizel
This replaces our DrawTargetCapture hack with a similar but more powerful TextDrawTarget
hack. The old design had several limitations:

* It couldn't handle shadows
* It couldn't handle selections
* It couldn't handle font/color changes in a single text-run
* It couldn't handle decorations (underline, overline, line-through)

Mostly this was a consequence of the fact that it only modified the start and end
of the rendering algorithm, and therefore couldn't distinguish draw calls for different
parts of the text.

This new design is based on a similar principle as DrawTargetCapture, but also passes
down the TextDrawTarget in the drawing arguments, so that the drawing algorithm can
notify us of changes in phase (e.g. "now we're doing underlines"). This also lets us
directly pass data to TextDrawTarget when possible (as is done for shadows and selections).

In doing this, I also improved the logic copied from ContainsOnlyColoredGlyphs to handle
changes in font/color mid-text-run (which can happen because of font fallback).

The end result is:

* We handle all shadows natively
* We handle all selections natively
* We handle all decorations natively
* We handle font/color changes in a single text-run
    * Although we still hackily intercept draw calls
    * But we don't need to buffer commands, reducing total memcopies

In addition, this change integrates webrender's PushTextShadow and PushLine APIs,
which were designed for this use case. This is only done in the layerless path;
WebrenderTextLayer continues to be semantically limited, as we aren't actively
maintaining non-layers-free webrender anymore.

This also doesn't modify TextLayers, to minimize churn. In theory they can be
augmented to support the richer semantics that TextDrawTarget has, but there's
little motivation since the API is largely unused with this change.

MozReview-Commit-ID: 4IjTsSW335h
2017-06-19 10:58:28 -04:00
Kartikaya Gupta
1d5d12a09b Bug 1389138 - Add helper to track the topmost scroll id on the WR stack. r=mstange
Note that when PushClipAndScrollInfo is called, we are pushing an
already-defined scrolling clip onto the stack, and anything that gets
pushed inside it is going to be defined as being inside that scrolling
clip. So we need to make sure to update the scroll id stack for those
calls as well. This was an oversight previously but it never mattered.

MozReview-Commit-ID: D40Gk00HYrq
2017-08-17 11:06:51 -04:00
Sebastian Hengst
d190f20d54 Backed out changeset d45e64ac4452 (bug 1389138) 2017-08-17 21:08:14 +02:00
Kartikaya Gupta
48fd21ce4f Bug 1389138 - Add helper to track the topmost scroll id on the WR stack. r=mstange
Note that when PushClipAndScrollInfo is called, we are pushing an
already-defined scrolling clip onto the stack, and anything that gets
pushed inside it is going to be defined as being inside that scrolling
clip. So we need to make sure to update the scroll id stack for those
calls as well. This was an oversight previously but it never mattered.

MozReview-Commit-ID: D40Gk00HYrq
2017-08-17 11:06:51 -04:00
Morris Tseng
846bcf9bc7 Bug 1389027 - Support nsDisplayPerspective in layers-free mode. r=kats
MozReview-Commit-ID: K0RCuQ8WEE3
2017-08-14 17:31:55 +08:00
JerryShih
8463c6042e Bug 1352092 - Get the max texture size from WR. r=nical
The gecko side just queries the max texture size from gl context[1]. We
should query that size from WR.

[1]
https://dxr.mozilla.org/mozilla-central/rev/4c5fbf49376351679dcc49f4cff26c3c2e055ccc/gfx/webrender_bindings/WebRenderAPI.cpp#72

MozReview-Commit-ID: 6RQ8ZW9mWSE
2017-08-12 13:41:56 +08:00
Kartikaya Gupta
0e93a34ba6 Bug 1386483 - Split the wr_dp_push_clip method into two to allow reusing clips. r=jrmuizel
MozReview-Commit-ID: 90BEJGs8wGg
2017-08-08 15:43:17 -04:00
sotaro
67d99a142e Bug 1385003 - Use a different WebRenderAPI instance for each WebRenderBridgeParent. r=kats
Previously, the WebRenderBridgeParent for each content layer tree would use the
same WebRenderAPI instance as the top-level WebRenderBridgeParent for that window.
However, in order to make the namespacing changes work we now need to use a
separate WebRenderAPI instance for each WebRenderBridgeParent. The content
WebRenderAPIs are cloned from the parent one, so that they all share the same
backend, but can allocate resource IDs in distinct namespaces.

MozReview-Commit-ID: 7VTFL8F09n7
2017-08-09 08:46:25 -04:00
Kartikaya Gupta
3b530d5b3a Bug 1385003 - Update webrender bindings for API changes in WR cset f6d81d9. r=kvark
In theory the upstream API change should allow us to share the same WR renderer
instance across multiple WebRenderAPI instances. For now however I retain the
existing behaviour of one WR instance for each WebRenderAPI instance, but keep
track of the document id in a new DocumentHandle struct. The C++ side keeps
a pointer to this DocumentHandle struct instead of the raw RenderApi.

MozReview-Commit-ID: I9pCKOY1OYx
2017-08-09 08:46:24 -04:00
JerryShih
be0bede63b Bug 1357299 - P12: Add SyncObject in RendererOGL. v2. r=nical
With DXVA2 hardware-video-decoding, the RendererOGL should have a
synchronization mechanism to prevent the flickering of video texture.
Create a SyncObject in RendererOGL to do the texture synchronization.

The WebRenderAPI also exposes the RendererOGL's SyncHandle to
WebRenderBridgeParent. Then, the WebRenderBridgeParent could pass this SyncHandle
to the video decoding module for texture synchronization.

MozReview-Commit-ID: toQ2mO5fzG
2017-08-07 18:15:25 +08:00
Nicolas Silva
dcba04db58 Bug 1383786 - Changes to the ffi boundary. r=sotaro 2017-07-28 14:08:11 +02:00
sotaro
7b7899d5ea Bug 1377619 - Add EndTransaction to on screen timing log for WebRender r=nical 2017-07-28 08:05:56 +09:00
Ryan Hunt
9a8fe199d7 Bug 1383714 - Update to cbindgen 0.1.19. r=kats
MozReview-Commit-ID: FdtZ9Pw0Z2A
2017-07-21 12:39:25 -04:00
Ryan Hunt
9e70a3bbca Bug 1382128 part 8 - Remove Wr prefix from some type aliases. r=kats
MozReview-Commit-ID: 5h7QobhcYc1
2017-07-19 03:28:58 -04:00
Ryan Hunt
4f99dd56fd Bug 1382128 part 6 - Remove WrBorderSides, WrBorderRadius, WrBorderWidths, WrNinePatchDescriptors. r=kats
MozReview-Commit-ID: 7YkHoNs64T9
2017-07-19 01:56:20 -04:00
Ryan Hunt
fbacf17c0f Bug 1382128 part 5 - Remove WrGradientStop and WrGradientExtendMode. r=kats
MozReview-Commit-ID: 47Rb5jUpCFX
2017-07-19 01:47:07 -04:00
Ryan Hunt
30adf010ea Bug 1382128 part 4 - Remove WrGlyphInstance. r=kats
MozReview-Commit-ID: 2CpW51FKUoK
2017-07-18 18:53:09 -04:00
Ryan Hunt
ed849c9399 Bug 1382128 part 2 - Remove WrPoint, WrSize, WrRect, WrMatrix, and WrColor. r=kats
MozReview-Commit-ID: 9koNScu4CyE
2017-07-18 18:32:46 -04:00
Ryan Hunt
9c7583cc1a Bug 1382128 part 1 - Use a namespace in webrender_bindings. r=kats
MozReview-Commit-ID: 3JTMa9Ix5S7
2017-06-27 19:20:36 -04:00
Kartikaya Gupta
fa8f84dbe0 Bug 1374730 - Update for clip API change in WR cset 0bf6655. r=mrobinson
MozReview-Commit-ID: dEe7yDDZPk
2017-07-10 07:22:39 -04:00
sotaro
966edad229 Bug 1357734 - Change argument of DisplayListBuilder::PushBorder() to bypass compiler bug r=jrmuizel
Visual Studio 2015 Update 3 has a bug that PGO build generates movaps to unaligned address. The patch just bypasses the compiler bu
2017-06-30 16:22:25 -07:00
Kartikaya Gupta
c4fd192cd9 Bug 1376215 - Stop exposing the WrClipRegionToken in WebRenderAPI.h APIs. r=jrmuizel
No functional changes intended in this patch. It merely simplifies the
additional patch that we'll need to update gecko past WR cset 0bf6655,
and saves some potential manual rebasing work.

MozReview-Commit-ID: Km8dBotP3NQ
2017-06-26 07:49:52 -04:00
Carsten "Tomcat" Book
050bc3b644 Backed out changeset 504e5b1de987 (bug 1376215) for bustage 2017-06-26 13:07:09 +02:00
Kartikaya Gupta
44a6c1a913 Bug 1376215 - Stop exposing the WrClipRegionToken in WebRenderAPI.h APIs. r=jrmuizel
No functional changes intended in this patch. It merely simplifies the
additional patch that we'll need to update gecko past WR cset 0bf6655,
and saves some potential manual rebasing work.

MozReview-Commit-ID: AgMyNapY2Og
2017-06-25 14:45:54 -04:00
Jeff Muizelaar
ff11ce0adc Bug 1375534 - Add bindings for setting transform style to PushStackingContext. r=kats 2017-06-22 17:30:27 -04:00
Jeff Muizelaar
b88bb674a1 Bug 1373861. Pass a built display list to PushBuiltDisplayList by reference instead of value. r=Ganrko
Previously we needed to pass by value and that was causing us to clear out our
prebuilt display list when we actually wanted to keep it around.

The rust code ended up doing a bit of a silly dance but that's better than copying the display list around.
2017-06-21 18:40:13 -04:00
Kartikaya Gupta
89a369d98a Bug 1373378 - Do a better job tracking the ancestor scrollids in DisplayListBuilder. r=jrmuizel
In some cases we need to know the ancestor scrollid of a scrollid that we had
previously pushed onto the stack and then subsequently popped off. Since that
scrollid is no longer actually on the stack at the time of the query, we would
return Nothing(). Instead, this patch adds a map to "remember" previously
encountered scrollids and their ancestors, so that these queries can be correctly
handled.

MozReview-Commit-ID: BrtEv88ZysX
2017-06-16 15:12:24 -04:00
Kartikaya Gupta
1d226771e5 Bug 1372912 - Make the clip id more strongly typed. r=jrmuizel,mrobinson
This patch is not really needed, but it avoids accidental conversion
between FrameMetrics::ViewID (which represents a scrolling clip) and a
uint64_t id for a non-scrolling clip.

MozReview-Commit-ID: JriIfpECHe7
2017-06-15 17:02:20 -04:00
Sebastian Hengst
1585a84193 Backed out changeset 8176859f8b70 (bug 1372912) 2017-06-15 22:58:57 +02:00
Kartikaya Gupta
d8fb074f27 Bug 1372912 - Make the clip id more strongly typed. r=jrmuizel,mrobinson
This patch is not really needed, but it avoids accidental conversion
between FrameMetrics::ViewID (which represents a scrolling clip) and a
uint64_t id for a non-scrolling clip.

MozReview-Commit-ID: BU7p4WNocXa
2017-06-15 09:41:46 -04:00
Wes Kocher
8cb3f3e868 Merge inbound to central, a=merge
UPGRADE_NSS_RELEASE
MozReview-Commit-ID: CBIFPwA5aNp
2017-06-13 18:27:10 -07:00
Kartikaya Gupta
48955e2862 Bug 1372321 - Log the mask rect when passing a WrImageMask to WR. r=jrmuizel
MozReview-Commit-ID: 3CdjfiwzZiJ
2017-06-13 08:42:39 -04:00
Kartikaya Gupta
86d23a43af Bug 1368496 - Expose the push_clip_and_scroll_info API in WR via WebRenderAPI. r=jrmuizel
MozReview-Commit-ID: f8gIDoUDC1
2017-06-08 11:34:01 -04:00
Kartikaya Gupta
81422f72fe Bug 1368496 - Track the pushed clip and scroll IDs. r=jrmuizel
Tracking the active clips and scroll layers is helpful for implementing
fixed-position type stuff, because we will need to answer questions like
"what is the ancestor scroll layer of this other scroll layer that is
somewhere on the stack" and "what is the currently active stack of
non-scrolling clips". This patch also adds a couple of methods to
WebRenderAPI that answers questions like these.

MozReview-Commit-ID: 9bgOW3Z8Tbp
2017-06-08 11:34:00 -04:00
Martin Robinson
c3c1ed22cd Bug 1365972 - Add initial WebRender support for nsDisplayFilter. r=rhunt, r=mattwoodrow 2017-06-06 06:28:00 -04:00
Kartikaya Gupta
53ed9e2cb2 Bug 1368551 - Remove unneccessary overload of PushStackingContext. r=pchang
This overload is only called in one place, so we can just inline it. It
makes the API a little simpler.

MozReview-Commit-ID: H55IUduUSiJ
2017-06-01 09:17:16 -04:00
Kartikaya Gupta
66b57574e1 Bug 1367734 - Update webrender to cset a54cc729259588dd1ff52c86d0c62cb2a1767137. r=jrmuizel,jerry
In addition to updating webrender and webrender_traits, this patch:
- bumps the euclid dependency in webrender_bindings to match webrender
- updates the Cargo.lock files and re-vendors third-party rust packages
- updates the push_yuv_image callers due to an API change in WR cset a4b9e25.
2017-06-01 08:57:10 -04:00