Commit Graph

44671 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
38b10eafda Bug 1824236 - Stop using XUL layout for scrollbars. r=jwatt
This rewrites scrollbar layout to work with regular reflow rather than
box layout.

Overall it's about the same amount of code (mostly because
nsScrollbarFrame::Reflow is sorta hand-rolled), but it cleans up a bit
and it is progress towards removing XUL layout altogether, without
getting into much deeper refactoring.

This also blocks some other performance improvements and refactorings I
want to make in this code.

We make some assumptions to simplify the code that to some extent were
made already before, both explicitly and by virtue of using XUL layout.

In particular, we assume that scrollbar / slider / thumb has no border or
padding and that the writing-mode is horizontal ltr.

Differential Revision: https://phabricator.services.mozilla.com/D173489
2023-03-27 20:54:53 +00:00
Sandor Molnar
fcbacc6d6c Backed out changeset 7da2469ac949 (bug 1824236) for causing assertion failures in layout/generic/crashtests/369038-1.xhtml CLOSED TREE 2023-03-27 23:20:35 +03:00
Emilio Cobos Álvarez
914393e83e Bug 1824236 - Stop using XUL layout for scrollbars. r=jwatt
This rewrites scrollbar layout to work with regular reflow rather than
box layout.

Overall it's about the same amount of code (mostly because
nsScrollbarFrame::Reflow is sorta hand-rolled), but it cleans up a bit
and it is progress towards removing XUL layout altogether, without
getting into much deeper refactoring.

This also blocks some other performance improvements and refactorings I
want to make in this code.

We make some assumptions to simplify the code that to some extent were
made already before, both explicitly and by virtue of using XUL layout.

In particular, we assume that scrollbar / slider / thumb has no border or
padding and that the writing-mode is horizontal ltr.

Differential Revision: https://phabricator.services.mozilla.com/D173489
2023-03-27 19:12:52 +00:00
Ray Kraesig
870715606c Bug 1820066 [3/3] - Default to DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL on Win10+ r=sotaro
This silences a warning emitted by the D3D11 debug layer.

Conveniently, it also suppresses bug 1763981.

Differential Revision: https://phabricator.services.mozilla.com/D171522
2023-03-27 16:54:13 +00:00
Ray Kraesig
f3d76a51df Bug 1820066 [2/3] - Allow in-process use of the compositor window r=sotaro
The in-process compositor assumes that no compositor window was present.
This is not guaranteed to be true if, for example, the preference
`gfx.webrender.flip-sequential` is set.

Make the in-process compositor more closely mirror the out-of-process
compositor. (At present this effectively just means calling ::SetParent
on the compositor window.)

Differential Revision: https://phabricator.services.mozilla.com/D172733
2023-03-27 16:54:13 +00:00
Ray Kraesig
873fc8dfcd Bug 1820066 [1/3] - Fix CreateSwapChainForHwnd call r=sotaro
Per Microsoft documentation, DXGI_SCALING_NONE is only supported by
swap chains using DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; for any other swap
effect, including DXGI_SWAP_EFFECT_SEQUENTIAL, another value must be
supplied. Prior to Windows 10 the only such available entry was
DXGI_SCALING_STRETCH, so use that.

This causes the `CreateSwapChainForHwnd` call to succeed, rather than
causing us to fall back to `CreateSwapChain`. There is no known user-
facing effect here, as DXGI_SCALING_STRETCH is documented to be the
semantics applied by `CreateSwapChain` -- but it does eliminate an error
message from the D3D11 debug layer's output.

Differential Revision: https://phabricator.services.mozilla.com/D171521
2023-03-27 16:54:12 +00:00
stransky
579b6fd6ed Bug 1823333 [VAAPI] Fix FEATURE_HW_DECODED_VIDEO_ZERO_COPY handling as it's allowlisted feature r=gfx-reviewers,aosmond
Differential Revision: https://phabricator.services.mozilla.com/D173573
2023-03-27 07:37:20 +00:00
Andi-Bogdan Postelnicu
4efa1bd0ba Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-27 07:20:25 +00:00
Glenn Watson
28a3117711 Bug 1822732 - Support inner opaque regions for SWGL with new quad rendering path r=gfx-reviewers,lsalzman
At the same time, simplify the inner region support from arbitrary
tile configs to an inner + AA edge section setup. It turns out that
we won't need the extra tiling functionality in follow up patches.

Differential Revision: https://phabricator.services.mozilla.com/D172749
2023-03-27 03:16:06 +00:00
Sandor Molnar
9db345d4c1 Backed out 2 changesets (bug 1276351) for causing build bustage in image/ClippedImage.cp CLOSED TREE
Backed out changeset e84598eb82c1 (bug 1276351)
Backed out changeset e940b0554484 (bug 1276351)
2023-03-25 14:16:43 +02:00
Jonathan Kew
6ab0ea8aa6 Bug 1823365 - Clean up management of missing-glyph atlas. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D173360
2023-03-25 09:42:48 +00:00
Andi-Bogdan Postelnicu
447f1e3358 Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-25 06:58:52 +00:00
Iulian Moraru
6d40eee997 Backed out 2 changesets (bug 1276351) for causing multiple failures.
Backed out changeset eeaf4f1e06af (bug 1276351)
Backed out changeset d44cb5704342 (bug 1276351)
2023-03-25 00:08:24 +02:00
Mark Banner
4a729cf9d7 Bug 1824173 - Automatically fix some ESLint issues raised by the valid-jsdoc configuration. r=mossop,webcompat-reviewers,denschub
Differential Revision: https://phabricator.services.mozilla.com/D173450
2023-03-24 19:35:24 +00:00
Andi-Bogdan Postelnicu
a1b827b503 Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-24 18:55:39 +00:00
stransky
0bd628961c Bug 1824335 [VAAPI] Add preference to force enable zero copy video playback r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D173519
2023-03-24 11:15:52 +00:00
Jonathan Kew
c96601cb34 Bug 376129 - Scale the missing-glyph hex digits more usefully for large font sizes. r=gfx-reviewers,lsalzman
This makes the digits scale up to better fill the box, as it looks a bit odd to have
the box grow with the font size but the digits remain tiny in the middle of it.

One thing that may look a little odd with this version is that 6-digit hexboxes tend
to get smaller digits than 4-digit ones with large font sizes. But I think that's
OK; it allows the 4-digit chars to be more readable, and 6-digit (non-BMP) ones are
generally much rarer.

(And the whole thing is basically cosmetic anyhow; this isn't about rendering web
content as intended, but trying to provide a bit of useful information when the
content is somehow broken or not renderable.)

Differential Revision: https://phabricator.services.mozilla.com/D173463
2023-03-24 09:07:04 +00:00
serge-sans-paille
93b77462d2 Bug 1824071 - Make gfx/webrender_bindings buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D173398
2023-03-24 07:01:09 +00:00
serge-sans-paille
97144c5a94 Bug 1824070 - Make gfx/thebes buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D173397
2023-03-24 07:01:08 +00:00
serge-sans-paille
5662734be9 Bug 1824069 - Make gfx/layers buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D173396
2023-03-24 07:01:08 +00:00
serge-sans-paille
132015154f Bug 1824068 - Make gfx/gl buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D173395
2023-03-24 07:01:07 +00:00
Jim Blandy
1e9e5f2198 Bug 1808602: Implement 'dom.webgpu.wgpu-backend' pref. r=jrmuizel
Add a new string-valued, Rust-visible pref, `dom.webgpu.wgpu-backend`, to `StaticPrefList.yaml` in `modules/libpref/init`. If this string is non-empty, use it to enable the indicated WebGPU backends when we create a `wgpu_core::Global` in `gfx/wgpu_bindings/src/server.rs`. See `StaticPrefList.yaml` for details.

As this is the first time we have exposed a `mirror: always`, `type: DataMutexString` pref to Rust, make the appropriate changes to `generate_static_pref_list.py` to generate the necessary C++ and Rust code to lock the value, make a string copy, and pass ownership back to Rust as an `nsstring::nsACString` (from the `xpcom/rust/nsstring` crate).

Differential Revision: https://phabricator.services.mozilla.com/D173335
2023-03-23 21:27:05 +00:00
Norisz Fay
3220100958 Backed out changeset 07b81afaa59e (bug 1808602) for causing python failure on test_generate_static_pref_list.py CLOSED TREE 2023-03-23 22:52:09 +02:00
Jim Blandy
46ff1ae846 Bug 1808602: Implement 'dom.webgpu.wgpu-backend' pref. r=jrmuizel
Add a new string-valued, Rust-visible pref, `dom.webgpu.wgpu-backend`, to `StaticPrefList.yaml` in `modules/libpref/init`. If this string is non-empty, use it to enable the indicated WebGPU backends when we create a `wgpu_core::Global` in `gfx/wgpu_bindings/src/server.rs`. See `StaticPrefList.yaml` for details.

As this is the first time we have exposed a `mirror: always`, `type: DataMutexString` pref to Rust, make the appropriate changes to `generate_static_pref_list.py` to generate the necessary C++ and Rust code to lock the value, make a string copy, and pass ownership back to Rust as an `nsstring::nsACString` (from the `xpcom/rust/nsstring` crate).

Differential Revision: https://phabricator.services.mozilla.com/D173335
2023-03-23 20:14:59 +00:00
Jamie Nicol
de05a66666 Bug 1824158 - Make vClipMaskUv highp again. r=gfx-reviewers,lsalzman
In bug 1823411 prim_shared.glsl's vClipMaskUv was made mediump,
assuming it was safe to do so as it is an unnormalized texture
coordinate. This is, however, causing fuzziness in a test on Adreno
devices, so we are now reverting it to highp.

Differential Revision: https://phabricator.services.mozilla.com/D173468
2023-03-23 20:06:33 +00:00
Christian Holler (:decoder)
3cb30b35f1 Bug 1821010 - Remove legacy IPC fuzzing code. r=truber,nika
Differential Revision: https://phabricator.services.mozilla.com/D171981
2023-03-23 14:53:22 +00:00
sotaro
b0f638846b Bug 1823844 - Add error log to RenderThread::Start() r=gfx-reviewers,aosmond
Differential Revision: https://phabricator.services.mozilla.com/D173246
2023-03-23 00:34:52 +00:00
Sandor Molnar
39587cae6b Backed out 3 changesets (bug 1820066) for causing xpc failures in widget/headless/tests/test_headless.js CLOSED TREE
Backed out changeset 501d93d8c9eb (bug 1820066)
Backed out changeset ec623d25b138 (bug 1820066)
Backed out changeset c34dfd018abb (bug 1820066)
2023-03-22 22:54:53 +02:00
Bob Owen
7403aa001e Bug 1823401: Hash cmap as well as head tables for SFNTData::GetUniqueKey. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D173252
2023-03-22 15:31:53 +00:00
Ray Kraesig
640df4416e Bug 1820066 [3/3] - Default to DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL on Win10+ r=sotaro
This silences a warning emitted by the D3D11 debug layer.

Conveniently, it also suppresses bug 1763981.

Differential Revision: https://phabricator.services.mozilla.com/D171522
2023-03-22 15:09:24 +00:00
Ray Kraesig
cfe1fff87e Bug 1820066 [2/3] - Allow in-process use of the compositor window r=sotaro
The in-process compositor assumes that no compositor window was present.
This is not guaranteed to be true if, for example, the preference
`gfx.webrender.flip-sequential` is set.

Make the in-process compositor more closely mirror the out-of-process
compositor. (At present this effectively just means calling ::SetParent
on the compositor window.)

Differential Revision: https://phabricator.services.mozilla.com/D172733
2023-03-22 15:09:24 +00:00
Ray Kraesig
0fe41b776a Bug 1820066 [1/3] - Fix CreateSwapChainForHwnd call r=sotaro
Per Microsoft documentation, DXGI_SCALING_NONE is only supported by
swap chains using DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; for any other swap
effect, including DXGI_SWAP_EFFECT_SEQUENTIAL, another value must be
supplied. Prior to Windows 10 the only such available entry was
DXGI_SCALING_STRETCH, so use that.

This causes the `CreateSwapChainForHwnd` call to succeed, rather than
causing us to fall back to `CreateSwapChain`. There is no known user-
facing effect here, as DXGI_SCALING_STRETCH is documented to be the
semantics applied by `CreateSwapChain` -- but it does eliminate an error
message from the D3D11 debug layer's output.

Differential Revision: https://phabricator.services.mozilla.com/D171521
2023-03-22 15:09:24 +00:00
Emilio Cobos Álvarez
471df3eab7 Bug 1821131 - Make font visibility part of the fontconfig substitution cache key. r=jfkthame
This is one possible option, the other one is to just cache the
substitute results.

Differential Revision: https://phabricator.services.mozilla.com/D172578
2023-03-22 13:11:25 +00:00
Andi-Bogdan Postelnicu
fa0bb17a0b Bug 1660405 - Move away from mozilla::IsInfinite in favor of std::isinf. r=nbp,media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D173037
2023-03-22 11:35:34 +00:00
Andi-Bogdan Postelnicu
fa5d4cca1f Bug 1660405 - Move away from mozilla::IsFinite in favor of std::isfinite. r=sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173036
2023-03-22 11:35:33 +00:00
Andi-Bogdan Postelnicu
10f49d4180 Bug 1660405 - Move away from mozilla::IsNaN in favor of std::isnan. r=nbp,media-playback-reviewers,sergesanspaille,padenot
Differential Revision: https://phabricator.services.mozilla.com/D173035
2023-03-22 11:35:33 +00:00
Stanca Serban
e31a178029 Backed out 7 changesets (bug 1660405) for causing bustages on Linux x64 opt. CLOSED TREE
Backed out changeset ad1a5f59214f (bug 1660405)
Backed out changeset a39e95f0aafe (bug 1660405)
Backed out changeset 48629ee0d70d (bug 1660405)
Backed out changeset 8419b99aab60 (bug 1660405)
Backed out changeset 535cc12c8bed (bug 1660405)
Backed out changeset e27052da4927 (bug 1660405)
Backed out changeset 11b0f9cf8091 (bug 1660405)
2023-03-22 13:05:53 +02:00
Andi-Bogdan Postelnicu
84b840d267 Bug 1660405 - Move away from mozilla::IsInfinite in favor of std::isinf. r=nbp,media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D173037
2023-03-22 09:27:58 +00:00
Andi-Bogdan Postelnicu
0b692b5a96 Bug 1660405 - Move away from mozilla::IsFinite in favor of std::isfinite. r=sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173036
2023-03-22 09:27:57 +00:00
Andi-Bogdan Postelnicu
a5d28acdd6 Bug 1660405 - Move away from mozilla::IsNaN in favor of std::isnan. r=nbp,media-playback-reviewers,sergesanspaille,padenot
Differential Revision: https://phabricator.services.mozilla.com/D173035
2023-03-22 09:27:56 +00:00
Mike Hommey
ba20433bd5 Bug 1823842 - Explicitly only build the wrench library on android. r=gfx-reviewers,jnicol
When upgrading the NDK to r23, the wrench builds for android fail
because cargo apk starts adding flags to the cargo rustc call it does,
and that's not compatible with the wrench crate having both a lib and a
bin target.

As cargo apk only packages the lib in the apk, we can just be explicit
and build the library only.

Differential Revision: https://phabricator.services.mozilla.com/D173244
2023-03-22 09:02:37 +00:00
Botond Ballo
188bd7bfec Bug 1737725 - Ensure hit-testing never observes scroll offsets that don't have async deltas applies. r=hiro,gw
When a new scene is swapped in on the render backend thread, its
scroll frames have scroll offsets that come from the main thread
and do not reflect async scroll deltas until such deltas are
sampled from APZ.

It's possible for hit-testing to observe the scene in this
temporary state, potentially leading to incorrect hit-test results.

To avoid this, save the async offsets from the previous scene
and apply them to the new scene until we can sample proper offsets
from APZ.

Differential Revision: https://phabricator.services.mozilla.com/D173100
2023-03-22 04:14:22 +00:00
Glenn Watson
e6bb9f7184 Bug 1821560 - Start splitting up ps_quad to a base shader r=gfx-reviewers,lsalzman
No functionality change here, just preparing for having different
variations of shaders that make use of ps_quad as a base.

Differential Revision: https://phabricator.services.mozilla.com/D172197
2023-03-21 22:53:32 +00:00
Noemi Erli
c370b8f523 Backed out changeset 22e246050235 (bug 1737725) for causing wrench bustages in fixed-position.yaml 2023-03-22 01:41:08 +02:00
Botond Ballo
8c13b1fe8f Bug 1737725 - Ensure hit-testing never observes scroll offsets that don't have async deltas applies. r=hiro,gw
When a new scene is swapped in on the render backend thread, its
scroll frames have scroll offsets that come from the main thread
and do not reflect async scroll deltas until such deltas are
sampled from APZ.

It's possible for hit-testing to observe the scene in this
temporary state, potentially leading to incorrect hit-test results.

To avoid this, save the async offsets from the previous scene
and apply them to the new scene until we can sample proper offsets
from APZ.

Differential Revision: https://phabricator.services.mozilla.com/D173100
2023-03-21 22:05:32 +00:00
Jamie Nicol
e667259fa5 Bug 1823411 - Add test to ensure shaders have explicit precision specifier. r=gfx-reviewers,lsalzman
The previous patch in this series ensured that every varying is now
given an explicit precision. We want to use mediump where possible for
performance reasons, and highp when required for correctness. Going
forward, in order to ensure that developers have considered what
precision is required for new varyings, this patch adds a shader test
to ensure that they are explicitly qualified.

Shader tests have until now used the `glsl` crate. And as the glsl
crate does not handle preprocessor directive properly, we ran them on
the pre-optimized shader sources. However, the optimization pass
outputs explicit varying precisions even if the input did not contain
them, so that does not work for this case. Instead, we have switched
to use the`glsl-lang` crate, which does handle preprocessor directives
correctly. This does add some duplicate crate dependencies, however
this only affects wrench, not webrender itself.

Differential Revision: https://phabricator.services.mozilla.com/D173029
2023-03-21 19:05:19 +00:00
Jamie Nicol
b4da4c2fb4 Bug 1823411 - Give all webrender's shader varyings an explicit precision. r=gfx-reviewers,lsalzman
Mali profiling tools have shown we are frequently fragment bound, in
particular due to varying interpolation. To help mitigate this, we
should use mediump where possible. Currently most of our varyings are
implicitly highp by default. This patch reduces their precision to
mediump where possible. When varyings must remain highp for
correctness reasons, this is now stated explicitly.

As expected, this does cause a fair bit of reftest fuzziness on
Android devices. This patch also updates reftest expectations to
reflect this.

Differential Revision: https://phabricator.services.mozilla.com/D173028
2023-03-21 19:05:19 +00:00
Jonathan Kew
b69e6563fc Bug 1823644 - Optimize textrun initialization by merging SanitizeGlyphRuns and SortGlyphRuns. r=gfx-reviewers,lsalzman
No change in behavior, just a marginal optimization when creating large/complex textruns.

Differential Revision: https://phabricator.services.mozilla.com/D173140
2023-03-21 18:44:12 +00:00
Dan Robertson
d560122c7e Bug 1823660 - Fix preference setting in tests. r=aryx
Ensure that dom.event.wheel-event-groups.enabled is set correctly in wheel
scroll tests.

Differential Revision: https://phabricator.services.mozilla.com/D173159
2023-03-21 16:24:39 +00:00
Kershaw Chang
5e58575e28 Bug 1809843 - Skip Failed tests, r=necko-reviewers,extension-reviewers,credential-management-reviewers,valentin,sgalich,robwu
Differential Revision: https://phabricator.services.mozilla.com/D171842
2023-03-21 09:09:58 +00:00