(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
Add an observer to restart the PVideoBridge connection when GPU process
restarts.
Differential Revision: https://phabricator.services.mozilla.com/D50403
--HG--
extra : moz-landing-system : lando
Combine sVideoBridgeToParentProcess and sVideoBridgeToGPUProcess into one
sVideoBridge. Each producing process, GPU or RDD, is only ever started with one
VideoBridgeChild endpoint. This is enough to get RemoteVideoDecoders in RDD
process to start using GPU memory to send video to compositor over PVideoBridge.
Differential Revision: https://phabricator.services.mozilla.com/D50402
--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
Otherwise, a main-thread update can interrupt a touch drag near its very
start, when we're still in the TOUCHING state while we're overcoming the
touch start tolerance threshold.
Depends on D51447
Differential Revision: https://phabricator.services.mozilla.com/D51448
--HG--
extra : moz-landing-system : lando
The patch permits to resize compositor window's size after ::SetParent() call to prevent a conflict between ::SetParent() and ::SetWindowPos(). Then it triggers a composite after SetParent() call to resize compositor window correctly.
Differential Revision: https://phabricator.services.mozilla.com/D49884
--HG--
extra : moz-landing-system : lando
The emulator's implementation of glShaderSource can crash if the source string
are not null-terminated, even though we correctly pass the lengths of the
strings. Work around this by adding a null terminator when running on the
emulator.
Depends on D51293
Differential Revision: https://phabricator.services.mozilla.com/D51294
--HG--
extra : moz-landing-system : lando
A bug in the android emulator means that glTexImage3D thinks the maximum texture
size is the value of GL_MAX_TEXTURE_SIZE, rather than the value returned by
glGetIntegerv(GL_MAX_TEXTURE_SIZE). This means that calls to glTexImage3D fail
when width, height, or depth > 3379.
This forces us to use glTexStorage3D instead of glTexImage3D, avoiding
this bug. This relies upon swizzling, which is indeed supported on the
android emulator.
Differential Revision: https://phabricator.services.mozilla.com/D51293
--HG--
extra : moz-landing-system : lando
This is not an error in the same way as a download failure, and should not be reported as one.
An Info message is sufficient.
Also suppress "unknown" location in messages about @font-face rules, as it is not useful,
pending a proper fix (bug 1450903).
Differential Revision: https://phabricator.services.mozilla.com/D50346
--HG--
extra : moz-landing-system : lando
- When partial present is not valid, ensure that a single dirty
rect the entire size of the framebuffer is returned.
- Ensure that we never return an empty dirty rect. If nothing is
dirty, the returned dirty rects array is empty, which can be
used by the client to completely skip calling Present.
- Remove partial present Multi mode (for now). This mode has
some issues with overlapping tiles which can be resolved as
a follow up.
This should allow enabling partial present for a single dirty rect,
which covers most common cases. We can re-implement the more
complicated Multi partial present mode if / when we find pages
where supporting multiple partial present rects is a good win.
Differential Revision: https://phabricator.services.mozilla.com/D51332
--HG--
extra : moz-landing-system : lando
We cache the path in AnimationInfo for layers, and in
CompsoitorAnimationStorage for web-renderer.
Differential Revision: https://phabricator.services.mozilla.com/D50013
--HG--
extra : moz-landing-system : lando
This also includes the implementation of SetAnimatable, FromAnimatable,
and merge the final matrix with motion path.
Besides, we always use PathBuilderSkia for calculating the gfx::Path for
web-renderer.
Differential Revision: https://phabricator.services.mozilla.com/D50011
--HG--
extra : moz-landing-system : lando
We need to pass these two types into the compositor, so we need a better
way to serialize these rust types. We use serde and bincode to
serialize/deserialize them, and use ByteBuf to pass the &[u8] data
through IPC. We define StyleVecU8 for FFI usage only.
Differential Revision: https://phabricator.services.mozilla.com/D50688
--HG--
extra : moz-landing-system : lando
This makes the behaviour for touch-drags match the behaviour we already have
for pan gesture events.
Depends on D51201
Differential Revision: https://phabricator.services.mozilla.com/D51202
--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 implementation is off by default (behind gfx.webrender.compositor) until various bugs and inefficiencies are fixed.
Differential Revision: https://phabricator.services.mozilla.com/D51034
--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
Add an observer to restart the PVideoBridge connection when GPU process
restarts.
Differential Revision: https://phabricator.services.mozilla.com/D50403
--HG--
extra : moz-landing-system : lando
Combine sVideoBridgeToParentProcess and sVideoBridgeToGPUProcess into one
sVideoBridge. Each producing process, GPU or RDD, is only ever started with one
VideoBridgeChild endpoint. This is enough to get RemoteVideoDecoders in RDD
process to start using GPU memory to send video to compositor over PVideoBridge.
Differential Revision: https://phabricator.services.mozilla.com/D50402
--HG--
extra : moz-landing-system : lando