This applies the patch from https://github.com/servo/webrender/pull/1330
without pulling all the recent changes to webrender.
Bug 1321847 will ensure further updates don't break building with older
versions of rustc without meaning to.
--HG--
extra : rebase_source : 6b08ff312f596b56d31b444e670f442c47d7d110
If we set a transform in push_stacking_context, it changes the internal
WebRender behaviour to make that stacking context a reference frame, and
things inside it are positioned differently. This is true even if the
transform is an identity transform.
In most cases we are hitting this and sending an identity transform
through, when in fact we want to be sending a None value to WebRender so
that it doesn't create reference frames. This is a partial fix, a proper
fix will be done in bug 1345577 by separating the CSS transform from the
other transforms that FrameLayerBuilder invents.
MozReview-Commit-ID: ElSs3hFMD2D
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.
This allows APZCCallbackHelper to send the SetConfirmedTargetAPZC
message over PWebRenderBridge if webrender is enabled, rather than
assuming the layer manager is a ClientLayerManager and then crashing.
MozReview-Commit-ID: 57o9CaCcbTi
This makes it simpler to reuse this API from WebRenderBridgeParent,
since we can provide a layers id but not a LayerTransactionParent.
MozReview-Commit-ID: DEIGMk9tJEB
This implements some methods exposed on DOMWindowUtils and used by
reftests, for the WebRender codepath. The implementation is very similar
to the implementation in LayerTransactionParent.
MozReview-Commit-ID: HP8OxzIzS7P
This is helpful for reusing the FlushApzRepaints from
WebRenderBridgeParent, since it no longer assumes there's a layers
transaction object.
MozReview-Commit-ID: GVqDDEeZaN3
Both nsIntPoint and IntRect are specializations of template classes (BasePoint
and BaseRect) that are already covered by the corresponding template methods
in LayersLogging.h. Therefore these methods are not needed (and in fact are not
listed separately in LayersLogging.h).
MozReview-Commit-ID: BIZAOFfWCfI
MozReview-Commit-ID: yHXUFw2fx6
***
Bug 1367062 - Change std::map to std::unordered_map in APZCTreeManager
changed gfx/layers/FrameMetrics.h by adding a ScrollableLayerGuidHash class that will be used as the hashing function for std::unordered_maps which use ScrollableLayerGuid as keys.
changed gfx/layers/apz/src/APZCTreeManager.cpp by changing mApzcMap to a std::unordered_map.
changed gfx/layers/apz/src/APZCTreeManager.h by changing mZoomConstraints to a std::unordered_map.
MozReview-Commit-ID: JmoQzh1MvKK
--HG--
extra : rebase_source : cb7bd9419085f83873c9fd019c4a379fae0ee278
WebRenderImageLayer will create the proper number of imageKey for different video format. Then, send the imageKey to The WebRenderBridgeParent.
MozReview-Commit-ID: HMp4KWCCFqU
Different TextureHost type could use different WR commands. So, make a abstract interface for these different commands.
MozReview-Commit-ID: 63dnOJC2P9r
Use wr_api_add_external_image() to replace all types of ext-image adding functions.
Add a new interface wr_dp_push_yuv_interleaved_image() to put a single channel yuv_interleaved image in WR display list.
MozReview-Commit-ID: 1kDerOGwUuE
Add LOCAL_GL prefix for all GL constant value.
Turn to use GL_RED and GL_RB if we use core profile.
Turn to use GL_RGB_422_APPLE instead of GL_YCBCR_422_APPLE for core profile.
MozReview-Commit-ID: FCwbrUEFUxI
If font is downloading, we don't draw any glyphs in drawtarget which
means mDrawCommandsStorage doesn't contain any FILLGLYPHS command.
Return false in this situation so that we can handle it correctly in the
caller.
MozReview-Commit-ID: CtxvCeYh0ii
This makes UpdateLayerTree synchronous enough to ensure that the layer
transaction from the child reaches the compositor. Given the comment in
http://searchfox.org/mozilla-central/rev/484d2b7f51b7aed035147bbb4a565061659d9278/dom/interfaces/base/nsIDOMWindowUtils.idl#106
this seems to be the original intent of this function anyways. Without this, we
can have a race between the child talking to the compositor and the child
talking to the parent talking to the compositor.
This also changes GetCompositorBridgeChild to work even when the widget doesn't
have a CompositorBridge
This makes UpdateLayerTree synchronous enough to ensure that the layer
transaction from the child reaches the compositor. Given the comment in
http://searchfox.org/mozilla-central/rev/484d2b7f51b7aed035147bbb4a565061659d9278/dom/interfaces/base/nsIDOMWindowUtils.idl#106
this seems to be the original intent of this function anyways. Without this, we
can have a race between the child talking to the compositor and the child
talking to the parent talking to the compositor.
This also changes GetCompositorBridgeChild to work even when the widget doesn't
have a CompositorBridge
In addition to updating gfx/webrender and gfx/webrender_traits, this patch:
- Updates the webrender_bindings Cargo.toml file for version bumps
- Updates the Cargo.lock files and revendors the third-party rust dependecies
- Updates the webrender bindings for a change in the display list construction
and finalization API in WR csets 425155a and 1eb84eb.
We now have to pass around a content size parameter to construct a display list,
and we get back a content size from finalizing the display list. Since we pass
the finalization results over IPC to WebRenderBridgeParent, we need to update
the IPDL as well to pass this around.
- Updates the webrender bindings for a change to scroll_node_with_id in WR cset
48a098f.
- Updates the webrender bindings for a change to push_text in WR cset 3287c15.
This is the WR equivalent (but stripped down to the basics) of the code
in AsyncCompositionManager that advances APZ animations and applies the
async transform to the layer's shadow transform. Currently this doesn't
do anything fancy with the extra scrolling clips, or moving scrollbars,
etc.
MozReview-Commit-ID: BwbNRNHAc6G
This adds an RAII helper and uses it in RenderLayer functions. When APZ
is enabled, the RAII helper pushes a scrolling clip for each scrollable
metrics on the layer. It also pops off the scrolling clips on
destruction. Note that this should happen before any other things are
pushed into the WR display list for the rendering of a layer, since
those things should be subjected to the enclosing scrolling clips.
If APZ is disabled, this skips pushing the scrolling clips.
MozReview-Commit-ID: 1qv9egKbbok
The clips in WR do double-duty - they can be either scrolling clips or
non-scrolling clips. From gecko's point of view we want to treat them
separately so this updates the WebRenderAPI wrapper to expose two
different APIs for the two types of clips.
MozReview-Commit-ID: 3SLWkAq7Uxd
Gecko only draw one line for each collapsed border. In order to draw
only one line border in webrender, I create normal border webrender
command but only show top side of border for inline direction and left
side for block direction.
MozReview-Commit-ID: 7QChXuzVbg7
Two bugs:
* We were failing to (re)initialize the length to 0, leading to segfaults on Rust processing "empty" lists.
* We were setting the pointer of empty Vec's to null, which is technically UB in Rust because Vec tells Rust its pointer is non-null (this is why Option<Vec<T>> has the same size as Vec<T>). align_of::<T> is what it uses to as a non-null junk pointer, which in this case is 1.
MozReview-Commit-ID: Gzy1NtKlSV7
The reason of this change is the same as for Part 2, except that this commit fixes
nsSVGPaintServerFrame::GetPaintServerPattern rather than PaintSVG.
Commit-ID: 691YrKZ0Lm9
MozReview-Commit-ID: KSnFhCndFUk
The DrawResult return was not in fact anything to do with the success or
failure of that method, but was actually passing out a very specific piece of information
about the success or failure of any imagelib drawing that may not have occurred
under the various PaintSVG calls.
The signature of PaintSVG is changed from
DrawResult PaintSVG(...., uint32 flags);
to
void PaintSVG(...., imgDrawingParams& aPackage);
imgDrawingParams wraps DrawResult and imgIContainer::FLAG_* as a pack, pass through
PaintSVG to imagelib draw calls under beneath.
MozReview-Commit-ID: IOq2evUAOQF