In future, WR will consider this when deciding whether an image
should be promoted to be a native compositor surface.
Differential Revision: https://phabricator.services.mozilla.com/D55406
--HG--
extra : moz-landing-system : lando
Snapping glyph positions are an internal detail to a primitive. As such,
any snapping required must be taken into account when calculating the
local rect. That ensures that when the clip is applied, it doesn't cut
off parts of the glyph that would have been retained after snapping.
Differential Revision: https://phabricator.services.mozilla.com/D55348
--HG--
extra : moz-landing-system : lando
Add a first pass at invalidation debugging infrastructure. Also
tidy up the locations that invalidate into a common method, that
sets the invalidation reason.
Differential Revision: https://phabricator.services.mozilla.com/D52128
--HG--
extra : moz-landing-system : lando
The glyph pixel space in which we rasterized glyphs differed from how we
rendered the rasterized glyphs in the shader. They need to be in
agreement because the glyph subpixel offset selected during
rasterization depends on it. This patch should make the paths consistent
with each other.
Additionally, during animations, we now snap the reference frame
relative offset ignoring the impact of any animated transforms. This
helps with minimizing glyph wiggling during the transition.
Differential Revision: https://phabricator.services.mozilla.com/D51305
--HG--
extra : moz-landing-system : lando
(1) Reduce size of content tiles from 2048 x 512 to 1024 x 512.
This reduces the large extra overhead of tiles on screens that
are not 4k resolution.
(2) Remove small 128 x 128 tiles.
These typically create a lot of OS compositor surfaces, which
adds significant overhead on some platforms. Having them be
normal content tiles also means no resizing of the picture
cache for the UI when the awesome bar and/or status bar is on.
(3) Add support for very narrow cache surfaces.
This is a special use case for scrollbar caches. It's worth
supporting this special case for the significant memory and
performance savings for these surfaces.
Differential Revision: https://phabricator.services.mozilla.com/D51541
--HG--
extra : moz-landing-system : lando
Previously, WR needed to update and track dependencies for all
allocated picture cache tiles in the virtual display port. This
means doing extra CPU work (dependency updates) and in some cases,
extra GPU work (larger off-screen child surfaces) than are strictly
required.
With this patch, each tile determines if it is currently visible in
pre_update. If the tile isn't visible, we skip doing dependency
updates until it is on screen again. More importantly, this is
used to reduce the world culling rect for primitive preparation,
which also means large child surfaces only require allocations
large enough to enclose the visible tiles, rather than the
display port.
Differential Revision: https://phabricator.services.mozilla.com/D51006
--HG--
extra : moz-landing-system : lando
With the recent changes to compositing in WR, the scene must either
only produce produce cache tiles, or disable picture caching and
rasterize directly.
This patch removes the (currently broken) path where WR would attempt
to disable only the picture cache slice(s) that have a complex
transform.
In future, we should disable creating picture cache slices with
complex transforms at the API level, and remove this path completely.
Differential Revision: https://phabricator.services.mozilla.com/D51228
--HG--
extra : moz-landing-system : lando
This patch allows WR to dynamically choose whether picture caching
is enabled per-frame, rather than only during initialization.
This will allow mobile devices to disable picture caching during
pinch zoom events, where tiles will be constantly invalidated.
This can also be controlled via a debug flag, which allows dynamic
toggling of picture caching in both Gecko and Wrench. This is
useful for profiling, to compare direct rasterization to picture
caching performance.
The native compositor interface relies on picture caching. So, if
a native compositor is enabled, picture caching is force enabled.
Differential Revision: https://phabricator.services.mozilla.com/D51211
--HG--
extra : moz-landing-system : lando
This patch adds a notion of "fully transparent" image in the resource cache.
These are not uploaded in the texture cache and image requests return the
necessary information to allow the frame building code to skip emitting
primitives accordingly.
Differential Revision: https://phabricator.services.mozilla.com/D47878
--HG--
extra : moz-landing-system : lando
Once this patch lands, all content drawn by WebRender is drawn into
a picture cache surface.
This will incur some extra GPU memory overhead since there are extra
GPU texture buffers. Much of this can be reduced by adding a couple
of simple optimizations in future to detect tiles that are solid
colors only.
With this change, we'll now be able to provide exact dirty rects for
the entire screen without any hacks, and start the work to draw into
OS compositor surfaces directly.
Differential Revision: https://phabricator.services.mozilla.com/D47395
--HG--
extra : moz-landing-system : lando