The android emulator appears to have a bug in its OpenGL
implementation where it gets confused about whether a texture is bound
to GL_TEXTURE_EXTERNAL_OES or GL_TEXTURE_2D. This was causing spurious
errors when attempting to use a regular 2D texture, due to the fact
that an external texture had previously been bound.
Work around this by explicitly unbinding from GL_TEXTURE_EXTERNAL_OES
immediately before binding to GL_TEXTURE_2D.
Differential Revision: https://phabricator.services.mozilla.com/D76318
Some pages created nesting levels of scroll roots where the outer
scroll frames are redundant (the scrollable size is zero if the
content rect is the same as the frame rect).
In these cases, it is of no benefit to select these as a scroll
root for picture cache tiles.
Differential Revision: https://phabricator.services.mozilla.com/D75451
Previously, WR would attempt to detect at the start of frame
building if the spatial node of any picture cache contained
a non-axis-aligned transform, and disable picture caching in
that edge case.
However, picture caching can't (currently) be disabled when the
native compositor is active. In this mode, picture caching was
force enabled, causing an assertion failure due to unexpected
coordinate systems when updating pictures.
This patch changes the way the detection of scroll root logic
works such that we don't consider any scroll frame inside a
reference frame to be a valid scroll root for picture caching
purposes. Thus it's not possible to create a picture cache
where the reference spatial node has a non-axis-aligned transform.
Differential Revision: https://phabricator.services.mozilla.com/D75890
Ensure that clips from an enclosing stacking context are correctly
propagated to nested iframes, and add a regression test for this.
Differential Revision: https://phabricator.services.mozilla.com/D76075
The lock we added in `GetPendingScrollPayload` and
`RemovePendingScrollPayload` are released at the end of the function,
not at when we finish using the underlying data, thus we may still
end up recording a payload that has been deleted.
To fix this, we introduce a new method to move the data from the
hashtable into the array argument while the lock is held, then the
caller can iterate over the array safely.
Differential Revision: https://phabricator.services.mozilla.com/D76052
This patch adjusts the device pixel scale for raster root surfaces so that the surface's content is not
pixelated/blurred when it is composited into its parent surface where a transform scales up the surface.
This only fixes the referenced bug when WebRender is used.
Differential Revision: https://phabricator.services.mozilla.com/D75236
WR currently disables picture caching during a pinch-zoom, if the
native compositor is disabled (since there's no real performance
gain to be had from caching tiles during a pinch-zoom).
However, this code path was not returning a dirty rect to the
caller code. For callers that take advantage of partial present,
this meant the screen was assumed to have no changes, and so
the swapbuffers is skipped incorrectly.
Differential Revision: https://phabricator.services.mozilla.com/D76081
This patch adjusts the device pixel scale for raster root surfaces so that the surface's content is not
pixelated/blurred when it is composited into its parent surface where a transform scales up the surface.
This only fixes the referenced bug when WebRender is used.
Differential Revision: https://phabricator.services.mozilla.com/D75236
Instead of accepting a `UniquePtr<ProfilerMarkerPayload>`, `profiler_add_marker_for_thread` now takes it by `const ProfilerMarkerPayload&`.
All callers can now create the payload on the stack, or as a temporary object. This saves a memory alloc+free for each call.
Differential Revision: https://phabricator.services.mozilla.com/D75912
This prevents the request from racing ahead of the AddFontInstance message which follows the transaction through the scene builder thread and silently returning zero-sized glyphs.
Differential Revision: https://phabricator.services.mozilla.com/D72906
RenderTextureHost is destroyed in WebRenderTextureHost::~WebRenderTextureHost() on current gecko. But It is better to destroy it by TextureHost that created the RenderTextureHost. GPUVideoTextureHost is an exception for now.
Differential Revision: https://phabricator.services.mozilla.com/D75255
Some pages created nesting levels of scroll roots where the outer
scroll frames are redundant (the scrollable size is zero if the
content rect is the same as the frame rect).
In these cases, it is of no benefit to select these as a scroll
root for picture cache tiles.
Differential Revision: https://phabricator.services.mozilla.com/D75451