This patch tries to duplicate the font data that is stored in WR captures.
The font data is then de-duplicated on load. This prevents having to predict
or store the complicated font key maps.
Differential Revision: https://phabricator.services.mozilla.com/D145409
This accelerates web-exposed SVG APIs such as getExtentOfChar() by avoiding the expensive
MeasureText() call when we're just getting the line-height metrics.
Differential Revision: https://phabricator.services.mozilla.com/D145717
This allows a number of callers to skip calling partial-ligature functions
altogether if the ranges are known to be empty, which should be a minor win.
Depends on D145631
Differential Revision: https://phabricator.services.mozilla.com/D145632
This aims to prevent an O(n^2) performance situation when per-glyph
positioning is in use.
This reduces the time to load the testcase here from around 70s to 17s
in my local build. Still not great, but at least it's less of a disaster.
Differential Revision: https://phabricator.services.mozilla.com/D145631
This removes a bunch of custom code from GfxInfo to obtain screen
information, and instead collects that screen information in
ScreenManager.
This, apart of removing duplicated code, has the extra benefit of
reporting multi-monitor information on GTK (and potentially in the
future reporting scale and refresh rate properly as well, I've kept the
telemetry as it was on that regard).
Differential Revision: https://phabricator.services.mozilla.com/D145178
IsZero() is changed to take a CSSPoint parameter instead of any
point type, to avoid accidentally re-introducing the issue.
Differential Revision: https://phabricator.services.mozilla.com/D145173
Make the APZ mochitests use coor coordinatesRelativeToScreen and its callers
properly. When was made async not everything was made to await properly.
Differential Revision: https://phabricator.services.mozilla.com/D144756
This accelerates web-exposed SVG APIs such as getExtentOfChar() by avoiding the expensive
MeasureText() call when we're just getting the line-height metrics.
Differential Revision: https://phabricator.services.mozilla.com/D145717
This allows a number of callers to skip calling partial-ligature functions
altogether if the ranges are known to be empty, which should be a minor win.
Depends on D145631
Differential Revision: https://phabricator.services.mozilla.com/D145632
This aims to prevent an O(n^2) performance situation when per-glyph
positioning is in use.
This reduces the time to load the testcase here from around 70s to 17s
in my local build. Still not great, but at least it's less of a disaster.
Differential Revision: https://phabricator.services.mozilla.com/D145631
Crashes of Bug 1764753 seemed to happen during closing video MFTDecoder or closing IMFSample after closing video MFTDecoder. We might need to release all IMFSamples before destroying video MFTDecoder.
Differential Revision: https://phabricator.services.mozilla.com/D144537
This breaks an assumption that the surface spatial node for the
resolve surface matches that of the backdrop root. In future we
might be able to support snapping in this use case, but I'm not
convinced it's actually useful to have that anyway yet.
Differential Revision: https://phabricator.services.mozilla.com/D145504
IsZero() is changed to take a CSSPoint parameter instead of any
point type, to avoid accidentally re-introducing the issue.
Differential Revision: https://phabricator.services.mozilla.com/D145173
This removes a bunch of custom code from GfxInfo to obtain screen
information, and instead collects that screen information in
ScreenManager.
This, apart of removing duplicated code, has the extra benefit of
reporting multi-monitor information on GTK (and potentially in the
future reporting scale and refresh rate properly as well, I've kept the
telemetry as it was on that regard).
Differential Revision: https://phabricator.services.mozilla.com/D145178
Removing the whole chromium IPC config is not possible because
gfxPlatformFontList uses base::*, but this should speed up builds a
little so seems worth landing regardless.
Differential Revision: https://phabricator.services.mozilla.com/D143371
This makes vsync source swapping much more natural.
The VsyncSource now only has a reference to the VsyncDispatcher for the duration
during which the dispatcher is listening to vsync. Whenever the dispatcher is
not listening to vsync, the source has no reference to the dispatcher and there
is no cycle.
This patch also adds the ability to register multiple dispatchers with the same
source. This ability is not used yet; a vsync source always has zero or one
dispatchers at the moment. It is in preparation for a future patch where there
will be one dispatcher per widget.
Furthermore, nothing uses gfxPlatform::GetGlobalVsync anymore, so it is removed.
Differential Revision: https://phabricator.services.mozilla.com/D144375
This doesn't change much; VsyncParent was already only using mVsyncSource
to obtain the VsyncDispatcher. (And to get the vsync rate, which it can
now get directly from the dispatcher.)
Differential Revision: https://phabricator.services.mozilla.com/D144370
Now gfxPlatform and gfxPlatform::mVsyncSource have shared ownership of the VsyncDispatcher.
This is in preparation for reversing the ownership relationship between VsyncSource and VsyncDispatcher.
Differential Revision: https://phabricator.services.mozilla.com/D144368
This makes it so that the VsyncSource doesn't need to keep track of the compositor vsync dispatchers.
And the moving-between-sources logic needs to be handled only for the VsyncDispatcher.
Once we have one VsyncDispatcher per window, we can probably eliminate CompositorVsyncDispatcher.
Differential Revision: https://phabricator.services.mozilla.com/D144366
IsZero() is changed to take a CSSPoint parameter instead of any
point type, to avoid accidentally re-introducing the issue.
Differential Revision: https://phabricator.services.mozilla.com/D145173
Make the APZ mochitests use coor coordinatesRelativeToScreen and its callers
properly. When was made async not everything was made to await properly.
Differential Revision: https://phabricator.services.mozilla.com/D144756
Change to derive from nsDisplayEffectsBase, since the backdrop-filter
can still have a visual bounds (and effect) even if the child
stacking context has no items. Also use the same approach to get
the bounding rect and implement GetBounds as nsDisplayFilters uses.
Differential Revision: https://phabricator.services.mozilla.com/D145295
This enables an offscreen-canvas Worker to do text rendering, but only with system-installed fonts
because we don't yet have a FontFaceSet available in the Worker. (That's bug 1758946.)
Differential Revision: https://phabricator.services.mozilla.com/D144188
Removing the whole chromium IPC config is not possible because
gfxPlatformFontList uses base::*, but this should speed up builds a
little so seems worth landing regardless.
Differential Revision: https://phabricator.services.mozilla.com/D143371
This makes vsync source swapping much more natural.
The VsyncSource now only has a reference to the VsyncDispatcher for the duration
during which the dispatcher is listening to vsync. Whenever the dispatcher is
not listening to vsync, the source has no reference to the dispatcher and there
is no cycle.
This patch also adds the ability to register multiple dispatchers with the same
source. This ability is not used yet; a vsync source always has zero or one
dispatchers at the moment. It is in preparation for a future patch where there
will be one dispatcher per widget.
Furthermore, nothing uses gfxPlatform::GetGlobalVsync anymore, so it is removed.
Differential Revision: https://phabricator.services.mozilla.com/D144375