gfx/layers/opengl/CompositorOGL.cpp:1624:10: error: 'return' will never be executed [-Werror,-Wunreachable-code-return]
return true;
^~~~
Differential Revision: https://phabricator.services.mozilla.com/D126872
Before Win32k Lockdown, Canvas would ensure that it would get the fastest possible implementation by initializing
devices in content process before allocating persistent buffers for its backing.
However, with Win32k Lockdown it's no longer possible, as initializing Direct3D and Direct2D make Win32k calls that
crash the locked-down content process.
This issue is generally solved by Remote Canvas; however, Remote Canvas is disabled if the GPU process is disabled.
If that happens, the current behavior is to attempt to initialize hardware acceleration again, causing a crash when
Win32k Lockdown is in effect.
This patch changes the behavior so that the devices will not initialize if they are in a locked-down content process,
even if Remote Canvas is disabled. The effect is that Canvas will fall back to using Skia for everything.
Differential Revision: https://phabricator.services.mozilla.com/D126761
Just as we have a scene and frame building spatial tree, this patch
introduces a SceneSpatialNode in addition to the existing SpatialNode.
This is a much lighter spatial node, containing just what is needed
during scene building. The next step will make the scene building
spatial tree and nodes persistent across display lists.
Differential Revision: https://phabricator.services.mozilla.com/D126752
We need to do this mapping in order to allow primitive interning during
the DL building stage. In future, we might remove this altogether and
have Gecko supply reference-frame-relative coordinates.
Differential Revision: https://phabricator.services.mozilla.com/D126750
All these tests except the wpt one were already fuzzy due to scrollbars,
this patch just changes the fuzzy values.
There's a test which is passing now (was marked as a failure due to bug
1308702). Probably was fixed a while ago and the test was still failing
due to fuzziness.
Depends on D125826
Differential Revision: https://phabricator.services.mozilla.com/D126674
All these tests except the wpt one were already fuzzy due to scrollbars,
this patch just changes the fuzzy values.
There's a test which is passing now (was marked as a failure due to bug
1308702). Probably was fixed a while ago and the test was still failing
due to fuzziness.
Depends on D125826
Differential Revision: https://phabricator.services.mozilla.com/D126674
gfx/2d/SourceSurfaceD2D1.cpp(201,20): error: variable 'options' set but not used [-Werror,-Wunused-but-set-variable]
D2D1_MAP_OPTIONS options;
^
gfx/thebes/gfxDWriteFontList.h(269,13): error: variable 'hr' set but not used [-Werror,-Wunused-but-set-variable]
HRESULT hr = S_OK;
^
gfx/thebes/gfxGDIFontList.cpp(1020,12): error: variable 'cmapLoaded' set but not used [-Werror,-Wunused-but-set-variable]
bool cmapLoaded = false;
^
gfx/thebes/gfxMacPlatformFontList.mm:1771:10: error: variable 'isStandardFace' set but not used [-Werror,-Wunused-but-set-variable]
bool isStandardFace = false;
^
gfx/thebes/gfxPlatformFontList.cpp(1064,18): error: variable 'rejectedFallbackVisibility' set but not used [-Werror,-Wunused-but-set-variable]
FontVisibility rejectedFallbackVisibility = FontVisibility::Unknown;
^
gfx/vr/service/OculusSession.cpp(1329,12): error: variable 'bNewController' set but not used [-Werror,-Wunused-but-set-variable]
bool bNewController = false;
^
Differential Revision: https://phabricator.services.mozilla.com/D126454
In a follow up patch, spatial nodes will be retained between
display lists if they are reused, meaning that the index of
a spatial node is no longer a meaningful indicator of whether
a node is a child/parent of another node. Because of this, we
need to remove any code that relies on comparing the numeric
value of spatial node indices.
Some time ago, we were seeing assertion failures where the
`get_relative_transform` function was being called with a child
node index that was actually a parent of the supplied parent node.
We detected this and had a band-aid solution in place, which is
removed by this patch.
There are two known cases where this was occurring (a compositor
clip on a picture cache, and when a picture cache was selected
with a scroll root below that of other clips / prims). The first
case is handled correctly - since the coord systems will be the
same and the function will early exit. The second case should no
longer occur.
If we _do_ see any regressions caused by this bug, let's investigate
and try to find the root cause so we have a better understanding
of the specific case.
Differential Revision: https://phabricator.services.mozilla.com/D126626
Pushing the clip for the opacity item into the clip manager has a non-trivial cost, so we get better performance if we handle flattening the item before that.
Differential Revision: https://phabricator.services.mozilla.com/D125633
All these tests except the wpt one were already fuzzy due to scrollbars,
this patch just changes the fuzzy values.
There's a test which is passing now (was marked as a failure due to bug
1308702). Probably was fixed a while ago and the test was still failing
due to fuzziness.
Depends on D125826
Differential Revision: https://phabricator.services.mozilla.com/D126674
It turns out that static coordinate systems are not particularly
useful - all we ever need to know is which parts of the tree
are in the root coordinate system.
This simplifies some upcoming patches, which allow spatial nodes
to be retained across display lists.
Differential Revision: https://phabricator.services.mozilla.com/D126625
Building with ac_add_options --disable-unified-build on macOS hits the following warnings-as-errors:
gfx/2d/FilterNodeSoftware.cpp:1022:10 [-Wunreachable-code-return] 'return' will never be executed
gfx/2d/DrawTargetCairo.cpp:1957:20 [-Wunused-function] unused function 'GfxMatrixToPixmanTransform'
gfx/thebes/gfxHarfBuzzShaper.cpp:1008:23: warning: unused variable 'sDageshForms' [-Wunused-const-variable]
gfx/thebes/gfxMacPlatformFontList.mm:818:31 [-Wunused-const-variable] unused variable 'kLangFontsDirs'
gfx/tests/gtest/TestSwizzle.cpp:221:21 [-Wunreachable-code] code will never be executed
gfx/tests/gtest/TestTreeTraversal.cpp:16:11 [-Wunused-const-variable] unused variable 'PERFORMANCE_TREE_DEPTH'
gfx/tests/gtest/TestTreeTraversal.cpp:17:11 [-Wunused-const-variable] unused variable 'PERFORMANCE_TREE_CHILD_COUNT'
gfx/tests/gtest/TestTreeTraversal.cpp:18:11 [-Wunused-const-variable] unused variable 'PERFORMANCE_TREE_LEAF_COUNT'
gfx/tests/gtest/TestTreeTraversal.cpp:19:11 [-Wunused-const-variable] unused variable 'PERFORMANCE_REGION_XWRAP'
gfx/vr/VRDisplayPresentation.cpp:151:3 [-Wunreachable-code-loop-increment] loop will run at most once (loop increment never executed)
gfx/ycbcr/scale_yuv_argb.cpp:61:21 [-Wunused-function] unused function 'Abs'
Differential Revision: https://phabricator.services.mozilla.com/D126592
LayersPixelsPerCSSPixel in the layers world would include the transform scale. I think we still want that behaviour. Since we multiply the displayport that results after ExpandDisplayPortToDangerZone by a scale that includes the transform scale, if we don't do this then we expand the displayport by more screen pixels the bigger the scale transform we have applied.
Differential Revision: https://phabricator.services.mozilla.com/D126307
Using CFTypeRefPtr ensures that the created Core Foundation / Media types are
deallocated under all code paths. The duplicated syntax of -"Deallocator"
variables is necessary because CFTypeRefPtr is designed to work with
functions that return the required type. All of the creation methods in use
here take a type reference as a parameter, making it impossible to pass in a
CFTypeRefPtr directly. The "Deallocator" variables serve the purpose of
ensuring deallocation even though the variables are not otherwise referenced.
This change also cleans up the casting for CFMutableDictionaryRef to use a
simpler Objective-C idiom.
Differential Revision: https://phabricator.services.mozilla.com/D126539
Right now adding a dynamic pref for webrender involves plumbing in gfxPlatform, gfxVars, CompositBridgeParent, WebRenderBridgeParent, WebRenderAPI, the bindings, and then messaging the pref change to the right thread in WebRender.
That's quite a bit time consuming for something we tend to do for multiple things.
We already have a pretty good system for boolean debug prefs where the pref only needs to be listed in gfxPlatform and in the DebugPref enum of webrender_api/lib.rs, which has led us to use it for non-debug purposes.
This patch adds a system similar to the DebugFlags with values passed in a bitfield to be able to use gfxVars. In WebRender the parameters are key-value pairs which flow through the pipeline so that any component can react to them. A followup will add integer parameters.
The patch also moves a few prefs to this system and adds a pref to use PBO uploads.
Differential Revision: https://phabricator.services.mozilla.com/D126100