This adds some swgl_commitTextureLinearR8ToRGBA8 variations so that we can deal
with alpha glyph formats. Following that, a simple span shader is added that
dispatches to this as appropriate.
Differential Revision: https://phabricator.services.mozilla.com/D115551
This implements gl_ClipDistance so that the text shader doesn't have
to manually evaluate whether or not we're inside the untransformed
source texture. This simplification is necessary so that we can work
towards using swgl_commitTexture in the text shader.
Differential Revision: https://phabricator.services.mozilla.com/D115457
This adds a swgl_blendSubpixelText() extension that enables us to move some
of the complexity of plumbing dual-source blending out of the shader for
subpixel text. This will enable further speed-ups later by allowing us to use
swgl_commitTexture.
Differential Revision: https://phabricator.services.mozilla.com/D115456
This adds some swgl_commitTextureLinearR8ToRGBA8 variations so that we can deal
with alpha glyph formats. Following that, a simple span shader is added that
dispatches to this as appropriate.
Differential Revision: https://phabricator.services.mozilla.com/D115551
This implements gl_ClipDistance so that the text shader doesn't have
to manually evaluate whether or not we're inside the untransformed
source texture. This simplification is necessary so that we can work
towards using swgl_commitTexture in the text shader.
Differential Revision: https://phabricator.services.mozilla.com/D115457
This adds a swgl_blendSubpixelText() extension that enables us to move some
of the complexity of plumbing dual-source blending out of the shader for
subpixel text. This will enable further speed-ups later by allowing us to use
swgl_commitTexture.
Differential Revision: https://phabricator.services.mozilla.com/D115456
This adds some swgl_commitTextureLinearR8ToRGBA8 variations so that we can deal
with alpha glyph formats. Following that, a simple span shader is added that
dispatches to this as appropriate.
Differential Revision: https://phabricator.services.mozilla.com/D115551
This implements gl_ClipDistance so that the text shader doesn't have
to manually evaluate whether or not we're inside the untransformed
source texture. This simplification is necessary so that we can work
towards using swgl_commitTexture in the text shader.
Differential Revision: https://phabricator.services.mozilla.com/D115457
This adds a swgl_blendSubpixelText() extension that enables us to move some
of the complexity of plumbing dual-source blending out of the shader for
subpixel text. This will enable further speed-ups later by allowing us to use
swgl_commitTexture.
Differential Revision: https://phabricator.services.mozilla.com/D115456
When sw-wr is used on Android, one GLContext is shared between CompositorOGLs. Then the CompositorOGL does not know what current program is. ShaderProgramOGLsHolder knows it, since ShaderProgramOGLsHolder is also shared between CompositorOGLs.
Differential Revision: https://phabricator.services.mozilla.com/D115576
This will allow us to check occlusion of slices earlier, so that
we know if we need to redraw a tile that was evicted or freed
due to previously being occluded.
Differential Revision: https://phabricator.services.mozilla.com/D115563
This moves the polygon data out of the ClipItemKind and ClipItemKeyKind enums,
which reduces bloat, which improves access times for scenes with lots of
clips -- even if they don't use image mask clips. The SceneBuilder interns
polygons when they arrive alongside image mask clips, and the HitTestingScene
retrieves them when it's time to build the hit test nodes.
Differential Revision: https://phabricator.services.mozilla.com/D114558
HitTestScene will need to access the SceneBuilder interners in order to pull
polygon data when creating HitTestNodes. This patch isolates the function
signature changes and the passthrough of the interners, without actually
using the interners for anything yet.
Differential Revision: https://phabricator.services.mozilla.com/D114557
Defining a new interner requires a new profiler tag. Adding a new tag requires
that some ids need to be shifted to maintain continuity with the other
interners. This patch isolates those changes without actually creating the new
polygon interner in the hope that it makes the reviewing easier.
Differential Revision: https://phabricator.services.mozilla.com/D114555
An image container can keep a surface alive longer than it can remain in
the cache, if it is indeed kept in the cache. We should cross reference
our memory report generated from the SurfaceCache against any surfaces
stored in our ImageContainer objects to ensure they are all reported.
This is of particular importance for blob recordings which are not put
into SurfaceCache. While the recordings themselves have their own memory
reporting inside of WebRender, it would be good to know what recordings
we are keeping alive from the content side to help break it down.
Differential Revision: https://phabricator.services.mozilla.com/D115517
The DoubleTapToZoom code starts with the rect for the whole element: let's say it runs the entire height of the (scrollable) page, and the entire width, and the width is enough to make it scrollable horizontally. Then it shrinks the height of the rect so the aspect ratio is the same as the composition bounds. Since the width of the element is wider than the composition bounds at minimum zoom, so too is the height. So it is impossible zoom out far enough to fit the whole target rect. We end up scrolling to the top left of this rect.
We want to zoom out so that we center what was visible before zooming out. This will keep whatever was in the center of the screen stationary. One might think we would want to center the rect on the cursor position, but that leads to scrolling document and does not look/feel good.
The test runs into bug 1710052, so that the layout scroll position never gets updated.
I checked that the test fails locally and on try server without this patch.
Differential Revision: https://phabricator.services.mozilla.com/D114588
And overscroll the root content scroller even if it's not scrollable.
The conditions when we handoff are;
1) Handoff to the root unconditionally if the subframe is not scrollable
with the given pan delta
2) Handoff to the root if both the subframe and the root are scrollable
with the given pan delta
Differential Revision: https://phabricator.services.mozilla.com/D115426
Fix for ConvertYCbCrToRGB32 to use full range convert functions for full range data.
Some changes of libyuv are backported from newer version, to get support of full range BT.709 and BT.2020 colorspace.
Differential Revision: https://phabricator.services.mozilla.com/D105937
Cached render tasks are usually much cheaper to produce than texture uploads so it's good to make sure lingering unused render tasks don't create unnecessary pressure on the texture cache. It also avoids things like animated gradients from filling the texture cache in a second.
Depends on D115206
Differential Revision: https://phabricator.services.mozilla.com/D115207
Making room in the texture cache as early as possible reduces the likelihood of allocating extra textures. It will also let us discard unused cached render tasks more aggressively in a folowup patch.
Differential Revision: https://phabricator.services.mozilla.com/D115206
RenderCompositorOGLSWGL will currently skip compositing if webrender
decides that the dirty rect for a frame is empty. However, in cases
where the EGL surface has been recreated we must perform a full
composite, as the previous contents of the framebuffer has been
lost. Not doing so is resulting in black screens being shown after
restoring the app on android, or the contents of the previous tab
being shown after switching to a new tab.
In the future we will add proper partial rendering support by tracking
buffer age and damage regions, and webrender will be able to force a
full render when the buffer age is zero. Until that time, we can fix
this bug by making RenderCompositorOGLSWGL::RequestFullRender() return
true for the subsequent frame after the surface has been recreated.
Differential Revision: https://phabricator.services.mozilla.com/D115342
With the patch for this bug we need to modify an existing test.
I haven't investigated this, but I think the scrollY value is always between 0 and 2 and I guess the patch makes it move around a bit more non-monotonically. Not sure it's worth spending time on, but I can if you think otherwise.
Differential Revision: https://phabricator.services.mozilla.com/D114668