Commit Graph

501 Commits

Author SHA1 Message Date
Glenn Watson
23e2c51d4d Bug 1768983 - Add prim flag for checkerboarding backgrounds r=gfx-reviewers,lsalzman
Although not needed right now (checkerboarding backgrounds get
a slice anyway due to being a different scroll root), this will
be important for the upcoming work to make backdrop filter
roots implicit. This allows WR to know when slicing up a content
slice if the prim is relevant to the backdrop root.

Differential Revision: https://phabricator.services.mozilla.com/D146145
2022-05-15 21:54:25 +00:00
Brad Werth
279bed3a61 Bug 1745492 Part 3: Expand WR YUV formats to include P010 as a MSB packing. r=lsalzman
P010 is trivially the same as NV12, but the 10-bit colors are packed into
the most significant bits instead of the least significant bits. This changes
the yuv shader to use the correct packing for P010. It treats P010 as its
own yuv format, which requires a lot of scaffolding.

Differential Revision: https://phabricator.services.mozilla.com/D140422
2022-03-05 17:31:19 +00:00
Nicolas Silva
55cceefeb1 Bug 1755747 - Add support for antialiased non-snapped rectangles. r=gfx-reviewers,aosmond
We need them for SVG primitives.

This patch adds a bit of plumbing to disable snapping some of the primitives and forcing the antialiasing shader feature where needed, and uses it for SVG solid rectangles and images.

Differential Revision: https://phabricator.services.mozilla.com/D139024
2022-02-23 13:37:39 +00:00
Hiroyuki Ikezoe
758d42b36e Bug 1571758 - Inform multiple sampled scroll offsets to WR and pick the most appropriate one in WR. r=botond
This change mitigates the gap between the external_scroll_offset informed from
the main-thread and scroll_offset informed from APZ.

Some wrench reftests for this change are in the next commit.

Differential Revision: https://phabricator.services.mozilla.com/D133444
2022-01-31 09:40:35 +00:00
Hiroyuki Ikezoe
719a1e1da0 Bug 1571758 - Inform apz scroll generation to WebRender's ScrollFrame from the main-thread. r=botond
Also inform a flat representing whether the frame's document has scroll-linked
effect or not.

Differential Revision: https://phabricator.services.mozilla.com/D133442
2022-01-31 09:40:35 +00:00
Dzmitry Malyshau
09fb2880c9 Bug 1695318 - Pass the perspective association from CSS to WR r=gfx-reviewers,bradwerth
Depends on D136163

I have a feeling this isn't exactly the right way to pass this info, since the old WR code must have known about the perspective node without using my new flag.

Differential Revision: https://phabricator.services.mozilla.com/D136180
2022-01-19 22:41:12 +00:00
Hiroyuki Ikezoe
9905df3489 Bug 1744842 - Use LayoutVector2D to set scroll offset (the off main-thread part). r=gw,botond
This includes some other changes;

1) Rename relevant functions
  scroll_node_with_id -> set_scroll_offset
  scroll_node -> set_scroll_offset
  set_scroll_origin -> set_scroll_offset
2) Drop ScrollClamping argument
  In Gecko we didn't use ScrollClamping::ToContentBounds at all
3) The order of arguments of scroll_node_with_id

Differential Revision: https://phabricator.services.mozilla.com/D133145
2021-12-09 04:39:10 +00:00
Hiroyuki Ikezoe
636da4ee55 Bug 1744842 - Use LayoutVector2D instead of LayoutPoint to set scroll offset (the main-thread part). r=gw,botond
Differential Revision: https://phabricator.services.mozilla.com/D133144
2021-12-09 04:39:10 +00:00
Hiroyuki Ikezoe
f63be56379 Bug 1742504 - Drop TransactionBuilder::UpdateScrollPosition. r=nical
It's not used at all. APZ uses TransactionWrapper::UpdateScrollPosition.

Differential Revision: https://phabricator.services.mozilla.com/D131860
2021-11-24 22:49:25 +00:00
Nicolas Silva
d5c7841b30 Bug 1737648 - Don't batch uploads for items larger than a certain size. r=gfx-reviewers,bradwerth
The default size on most platforms is 256*256 which corresponds to the default blob tile size. I didn't check on android so I set it to 512*512 above which we never batch the upload so that the behavior is unchanged, but I suspect that a smaller threshold like 256*256 would also work better there.

On Windows with heavy blob image workloads, not batching gives a 20%-30% improvement to the time spent in update_texture_cache.

Differential Revision: https://phabricator.services.mozilla.com/D129516
2021-11-03 16:42:42 +00:00
Matt Woodrow
7349b0d54e Bug 1730682 - Merge clips when flattening opacity. r=miko
This is required to get tests to pass without fuzz on Android.

Depends on D125633

Differential Revision: https://phabricator.services.mozilla.com/D127513
2021-10-05 20:47:30 +00:00
Nicolas Silva
8edf9638bf Bug 1690619 - Keep track of where the request to rendering something comes from. r=gfx-reviewers,mstange
This patch adds plumbing to keep track of why we request frames to be rendered.
This information is then displayed in gecko profile markers on the renderer thread as well as in profiler HUD counters (See "Render reasons" in profiler.rs).

Differential Revision: https://phabricator.services.mozilla.com/D127274
2021-10-05 12:54:39 +00:00
Nicolas Silva
d5c9a5398c Bug 1731610 - Add new prefs in WebRender with less boilerplate. r=gfx-reviewers,jrmuizel
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
2021-09-23 15:17:46 +00:00
Matt Woodrow
fbf3f268a3 Bug 1728050 - Move opacity flattening to be part of WR DL serialization. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D124005
2021-09-13 05:01:33 +00:00
criss
3f0efebda9 Backed out 10 changesets (bug 1714138, bug 1542929, bug 1728232, bug 1729236, bug 1728258, bug 1728251, bug 1728050) for causing bug 1424348 a=backout
Backed out changeset c5b71e6ce0e5 (bug 1729236)
Backed out changeset c6bcc4ed3d2e (bug 1729236)
Backed out changeset 7e292895282a (bug 1729236)
Backed out changeset d9ddd915e0c2 (bug 1714138)
Backed out changeset 82b98d2f0dcf (bug 1728258)
Backed out changeset 9a84a36b9dc4 (bug 1542929)
Backed out changeset 96be978630ff (bug 1728251)
Backed out changeset d7a8bf19d849 (bug 1728251)
Backed out changeset cce0c53b439f (bug 1728232)
Backed out changeset 3afd6aee7849 (bug 1728050)
2021-09-12 12:00:30 +03:00
Matt Woodrow
bec183afb7 Bug 1728050 - Move opacity flattening to be part of WR DL serialization. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D124005
2021-09-10 03:43:32 +00:00
Nicolas Silva
68a52ada44 Bug 1729441 - Add a pref to set the blob tile size. r=gfx-reviewers,bradwerth
The prefs name is gfx.webrender.blob-tile-size and can be changed at runtime.

It changes the behavior of a wrench reftest that was ensuring that we don't crash with unreasonable tile sizes. The new behavior (sanitizing the tile size) means we can render the image while we would previously skip it.

Differential Revision: https://phabricator.services.mozilla.com/D124789
2021-09-08 12:41:51 +00:00
Marian-Vasile Laza
da24ed0855 Backed out 7 changesets (bug 1728050, bug 1728251, bug 1728232, bug 1542929, bug 1714138, bug 1728258) for causing reftest failures. CLOSED TREE
Backed out changeset 41e053201cd3 (bug 1714138)
Backed out changeset 16ae9f5b4aa0 (bug 1728258)
Backed out changeset 414aa7ff05fe (bug 1542929)
Backed out changeset 7217ecf149c4 (bug 1728251)
Backed out changeset 405ff2ed2110 (bug 1728251)
Backed out changeset 3eec9e6c7218 (bug 1728232)
Backed out changeset 66038c15fe54 (bug 1728050)
2021-09-07 09:00:26 +03:00
Matt Woodrow
875e653a5f Bug 1728050 - Move opacity flattening to be part of WR DL serialization. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D124005
2021-09-06 23:12:02 +00:00
Glenn Watson
5e55160724 Bug 1728774 - Fix display item cache with retained DL builder. r=miko,gfx-reviewers
Fix a bug where the display item cache was not being reused from
frame to frame with retained display list builders.

At the same time, make the capacity recycling on the display list
serialization arrays a bit more realistic.

Differential Revision: https://phabricator.services.mozilla.com/D124412
2021-09-03 02:09:57 +00:00
Boris Chiou
fcacff240f Bug 1676789 - Sample APZ animations before sampling OMTA animations for webrender. r=hiro
In order to support scroll-linked animations, we need the scrolling
information for sampling omt animations, so we would like to do APZ animations
first.

Now we clear the dynamic properties before sampling APZ and OMTA, so we
can make sure the pending properties are empty before appending new
ones. Therefore, let's just replace set_properties with add_properties
because OMTA sampler shouldn't override the current pending properties which
may be added by APZ sampler.

Differential Revision: https://phabricator.services.mozilla.com/D122308
2021-09-01 06:50:20 +00:00
Alexandru Michis
c761683c99 Backed out 3 changesets (bug 1676789) for causing webrender bustages.
Backed out changeset 93c46fbfe1cc (bug 1676789)
Backed out changeset a5b2e568f5cb (bug 1676789)
Backed out changeset ec14bf08defc (bug 1676789)
2021-09-01 07:51:37 +03:00
Boris Chiou
28a8f155be Bug 1676789 - Sample APZ animations before sampling OMTA animations for webrender. r=hiro
In order to support scroll-linked animations, we need the scrolling
information for sampling omt animations, so we would like to do APZ animations
first.

Now we clear the dynamic properties before sampling APZ and OMTA, so we
can make sure the pending properties are empty before appending new
ones. Therefore, let's just replace set_properties with add_properties
because OMTA sampler shouldn't override the current pending properties which
may be added by APZ sampler.

Differential Revision: https://phabricator.services.mozilla.com/D122308
2021-09-01 04:26:53 +00:00
Jeff Muizelaar
5b5547cca4 Bug 1728311 - Remove unused LayersMessages::TransactionInfo. r=aosmond
Fixes up some missing includes that accidentally worked before.

Differential Revision: https://phabricator.services.mozilla.com/D124060
2021-08-31 14:48:00 +00:00
Glenn Watson
9716dd973c Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
This will allow storing state in a display list builder struct
between different display list builds. In time, this will be used
to reduce the size of the serialized display list data, by only
sending delta changes to WR. The extra information made available
by sending deltas will then allow WR to more efficiently cache and
reuse information across different scene/frame builds.

Differential Revision: https://phabricator.services.mozilla.com/D123579
2021-08-30 23:10:10 +00:00
Glenn Watson
df4127960e Bug 1726708 - Add stable key for spatial nodes r=gfx-reviewers,kvark
Add an interface (and update Gecko to provide) a stable unique
identifier for each spatial node that is consistent across
display lists.

Although this patch doesn't _do_ anything useful with this yet,
we'll use this in future to allow interning, persisting and caching
a lot more information related to primitives and clips.

For now, it just asserts that the calling code never supplies a
duplicate unique identifier - which will be useful to have running
in nightly for a couple of weeks before starting to make use of
these identifiers.

Differential Revision: https://phabricator.services.mozilla.com/D123177
2021-08-30 00:33:22 +00:00
Glenn Watson
5c663731ba Bug 1724846 - Split DL spatial tree to separate payload r=gfx-reviewers,nical
This will allow experimenting with different representations of
the spatial tree (such as interning and/or providing stable
indices during display list building). It may also simplify
future changes to the public API to expose the spatial tree
directly.

As part of these changes, refactor how the debug representation
for the capture format is (de)serialized, to make it simpler to
add different payload vector types in future.

Differential Revision: https://phabricator.services.mozilla.com/D122183
2021-08-30 00:33:22 +00:00
Alexandru Michis
51a484e3cf Backed out changeset 1d332a5ff4f9 (bug 1724846) for causing Bug 1727715.
CLOSED TREE
2021-08-26 22:51:05 +03:00
Alexandru Michis
943cb8606e Backed out changeset 9c2d20304eee (bug 1726708) for causing conflicts while backing out Bug 1724846 2021-08-26 22:50:37 +03:00
Glenn Watson
26d453e633 Bug 1726708 - Add stable key for spatial nodes r=gfx-reviewers,kvark
Add an interface (and update Gecko to provide) a stable unique
identifier for each spatial node that is consistent across
display lists.

Although this patch doesn't _do_ anything useful with this yet,
we'll use this in future to allow interning, persisting and caching
a lot more information related to primitives and clips.

For now, it just asserts that the calling code never supplies a
duplicate unique identifier - which will be useful to have running
in nightly for a couple of weeks before starting to make use of
these identifiers.

Differential Revision: https://phabricator.services.mozilla.com/D123177
2021-08-25 21:52:13 +00:00
Glenn Watson
9149dcfec2 Bug 1724846 - Split DL spatial tree to separate payload r=gfx-reviewers,nical
This will allow experimenting with different representations of
the spatial tree (such as interning and/or providing stable
indices during display list building). It may also simplify
future changes to the public API to expose the spatial tree
directly.

As part of these changes, refactor how the debug representation
for the capture format is (de)serialized, to make it simpler to
add different payload vector types in future.

Differential Revision: https://phabricator.services.mozilla.com/D122183
2021-08-24 02:18:51 +00:00
Iulian Moraru
534c6d12b2 Backed out changeset d93e8a61d529 (bug 1724846) for causing reftest failures on downscale-moz-icon-1.html. CLOSED TREE 2021-08-23 07:11:37 +03:00
Glenn Watson
c46752adac Bug 1724846 - Split DL spatial tree to separate payload r=gfx-reviewers,nical
This will allow experimenting with different representations of
the spatial tree (such as interning and/or providing stable
indices during display list building). It may also simplify
future changes to the public API to expose the spatial tree
directly.

As part of these changes, refactor how the debug representation
for the capture format is (de)serialized, to make it simpler to
add different payload vector types in future.

Differential Revision: https://phabricator.services.mozilla.com/D122183
2021-08-22 20:54:07 +00:00
Timothy Nikkel
c0ff54a411 Bug 1724901. Use the scale from ancestor documents in other processes in the StackingContextHelper. r=jrmuizel
This ensures images and svg content and anything else rasterized in the content process has the right scale.

Differential Revision: https://phabricator.services.mozilla.com/D122540
2021-08-18 03:44:56 +00:00
Narcis Beleuzu
4c3fac01fa Backed out 2 changesets (bug 1723665, bug 1724846) as per gw`s request
Backed out changeset 5f2aff372a24 (bug 1724846)
Backed out changeset 0cc8e08b6937 (bug 1723665)
2021-08-18 03:17:33 +03:00
Glenn Watson
8f19dc96b0 Bug 1724846 - Split DL spatial tree to separate payload r=gfx-reviewers,nical
This will allow experimenting with different representations of
the spatial tree (such as interning and/or providing stable
indices during display list building). It may also simplify
future changes to the public API to expose the spatial tree
directly.

As part of these changes, refactor how the debug representation
for the capture format is (de)serialized, to make it simpler to
add different payload vector types in future.

Differential Revision: https://phabricator.services.mozilla.com/D122183
2021-08-15 20:44:03 +00:00
Glenn Watson
2526d2cd07 Bug 1724344 - Split DL cache data into separate payload vec r=gfx-reviewers,kvark
Move the extra_data to be a specific cache_data separate vec in
the display list payload.

This shouldn't change any functionality, but serves as a proof
of concept for future changes which will introduce several other
separated payload vectors.

Differential Revision: https://phabricator.services.mozilla.com/D121937
2021-08-09 21:15:20 +00:00
Botond Ballo
73a3311dc2 Bug 1719913 - Simplify representation of StackingContextHelper::mDeferredTransformItem. r=tnikkel
Maybe<T*> is a redundant representation if there is no semantic
difference between Nothing() and Some(nullptr), and just makes
for cumbersome access syntax.

Differential Revision: https://phabricator.services.mozilla.com/D120568
2021-07-28 03:20:18 +00:00
Miko Mynttinen
8df6649834 Bug 1720804 - Part 1: Move majority of the display list code inside mozilla namespace r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D120041
2021-07-19 11:28:20 +00:00
Glenn Watson
0818cc6f63 Bug 1720624 - Remove WrSpaceAndClip type r=nical
This was used when defining scroll layers and also backdrop-filter.

Removing it from the scroll layer API allows removal of the implicit
clip rect that a scroll node previously created (Gecko doesn't use
this). To maintain compatibility with wrench tests, add a flag that
allows a test to specify a clip rect should be created for the scroll
layer (we should remove this from wrench in future and port the tests
to create explicit clip rects as required).

The usage of backdrop-filter was the only remaining place this type
was used, so it's now ported to use the clip-chain API.

This simplifies the scroll layer API and removes an extra clip rect
from each scroll layer instance, as a small performance improvement.

Differential Revision: https://phabricator.services.mozilla.com/D119938
2021-07-18 22:32:27 +00:00
Alexandru Michis
9b9c5fe24e Backed out 2 changesets (bug 1720804) for causing bustages.
CLOSED TREE

Backed out changeset 5278e88c6d34 (bug 1720804)
Backed out changeset 1acb4ed79b6b (bug 1720804)
2021-07-16 18:10:11 +03:00
Miko Mynttinen
397ffc88e1 Bug 1720804 - Part 1: Move majority of the display list code inside mozilla namespace r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D120041
2021-07-16 14:36:34 +00:00
Glenn Watson
e6ad82a33f Bug 1716933 - Remove DefineClip API from WR public API r=gfx-reviewers,jrmuizel
This will allow simplifying some of the internal clip handling
during scene building.

Differential Revision: https://phabricator.services.mozilla.com/D118127
2021-06-20 22:26:54 +00:00
Glenn Watson
2fdb581e0a Bug 1716925 - Remove use of DefineClip in ClipManager r=gfx-reviewers,jrmuizel
This removes the last use of DefineClip from Gecko, which will
allow removing and simplifying a lot of the clip handing code
during scene building in WR.

Differential Revision: https://phabricator.services.mozilla.com/D118121
2021-06-20 22:26:53 +00:00
Glenn Watson
9362296e04 Bug 1712651 - Remove unused pinch-zoom APIs r=gfx-reviewers,bradwerth
Gecko implements these via an APZ transform node in the spatial tree.

Differential Revision: https://phabricator.services.mozilla.com/D115853
2021-05-25 21:32:25 +00:00
Glenn Watson
eef65bc106 Bug 1709983 - Pt 1 - Remove PushClearRectWithComplexRegion. r=gfx-reviewers,nical
The clear region prim don't support complex clip regions (the
complex clip region was being ignored). This has been shipping
like this for many months now, so it seems it's not required.

Differential Revision: https://phabricator.services.mozilla.com/D114563
2021-05-10 20:10:12 +00:00
Brad Werth
e29fcbe551 Bug 1675375 Part 2: Add a polygon clips to image masks. r=gw
This patch augments the pushing of an image mask to allow a polygon clip
region to be attached to it.

Differential Revision: https://phabricator.services.mozilla.com/D105397
2021-04-15 18:54:38 +00:00
Dorel Luca
70eafc6b6c Backed out 7 changesets (bug 1675375) for Mochitest failures in gfx/layers/apz/test/mochitest/test_group_hittest-2.html. CLOSED TREE
Backed out changeset 1a2cb51e0573 (bug 1675375)
Backed out changeset e1ec44a75cd0 (bug 1675375)
Backed out changeset a628a5fa5291 (bug 1675375)
Backed out changeset 5fbf7f44c382 (bug 1675375)
Backed out changeset 053073e36e53 (bug 1675375)
Backed out changeset ae13d5fc65ba (bug 1675375)
Backed out changeset 1a8ae9663eb0 (bug 1675375)
2021-04-14 21:38:20 +03:00
Brad Werth
314c4b350d Bug 1675375 Part 2: Add a polygon clips to image masks. r=gw
This patch augments the pushing of an image mask to allow a polygon clip
region to be attached to it.

Differential Revision: https://phabricator.services.mozilla.com/D105397
2021-04-14 17:17:15 +00:00
Alexandru Michis
78634e2404 Backed out 7 changesets (bug 1675375) for causing mochitest plain failures in test_group_hittest-2.html
CLOSED TREE

Backed out changeset e2e27cedd002 (bug 1675375)
Backed out changeset dba2861e4b53 (bug 1675375)
Backed out changeset 5dbfc7ce0a85 (bug 1675375)
Backed out changeset dd08dfba1dcd (bug 1675375)
Backed out changeset 5f8ae081f4ee (bug 1675375)
Backed out changeset 4d13e1221a79 (bug 1675375)
Backed out changeset 0e463f7857ea (bug 1675375)
2021-04-14 07:29:47 +03:00