Граф коммитов

3625 Коммитов

Автор SHA1 Сообщение Дата
Glenn Watson 0ddb7a38cd Bug 1840214 - Disable inset box-shadow zero blur clips on new clip-path r=gfx-reviewers,lsalzman
This is causing some issues and we're close to release, do disable
this rare case on the new path for now.

Differential Revision: https://phabricator.services.mozilla.com/D181946
2023-06-26 01:46:51 +00:00
Glenn Watson c3c2304511 Bug 1839309 - Fix new clip-paths on 2d transforms that affect z-coords without preserve-3d r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D181716
2023-06-22 20:04:13 +00:00
Norisz Fay 47a79d59b0 Backed out changeset 2ac17e8a81a2 (bug 1837902) as requested by dev for causing multiple regressions CLOSED TREE 2023-06-21 22:55:05 +03:00
Glenn Watson d9f4fa2989 Bug 1837902 - Support disparate coordinate systems with new WR clip mask code path r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D180632
2023-06-21 00:00:22 +00:00
Glenn Watson c6a72ab58e Bug 1837103 - Support perspective transforms with new WR clip mask code path r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D180166
2023-06-19 02:31:03 +00:00
Natalia Csoregi 05d1afda58 Backed out changeset 550387c912c9 (bug 1837103) for causing multiple regressions. a=backout 2023-06-17 23:55:32 +03:00
Glenn Watson ba222fcb88 Bug 1837103 - Support perspective transforms with new WR clip mask code path r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D180166
2023-06-14 22:50:32 +00:00
Jan-Erik Rediger bfd59e80d3 Bug 1837142 - Update to Glean v53.0.0 r=TravisLong,supply-chain-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D180330
2023-06-14 10:48:26 +00:00
Glenn Watson 6b50a8161b Bug 1836690 - Add support for complex + tiled paths to new clip-mask rendering path r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D179901
2023-06-13 00:30:37 +00:00
Norisz Fay f072b086df Backed out changeset e7ca3872307f (bug 1836690) for causing reftest failure on colrv1-01.html#Q CLOSED TREE 2023-06-12 06:38:34 +03:00
Glenn Watson b7ccaa2a87 Bug 1836690 - Add support for complex + tiled paths to new clip-mask rendering path r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D179901
2023-06-11 22:20:58 +00:00
Lee Salzman 39388d4ef1 Bug 1812982 - Track composite surfaces independently of frame_surfaces. r=aosmond
We were locking composite surfaces, which were tracked within surfaces in frame_surfaces.
frame_surfaces was subsequently clipped and pruned. We then crawled frame_surfaces for
composite surfaces to unlock, which were unintentionally pruned by that point.

The solution to this mess is to just track composite surfaces that are locked independently
of frame_surfaces, so no more issues with clipping.

Differential Revision: https://phabricator.services.mozilla.com/D180609
2023-06-11 16:08:28 +00:00
Narcis Beleuzu cfdf6c8a4b Backed out changeset 5ea703c4d3f0 (bug 1812982) for bc failures on sw_compositor.rs 2023-06-11 12:59:21 +03:00
Lee Salzman 4ba022f37a Bug 1812982 - Track composite surfaces independently of frame_surfaces. r=aosmond
We were locking composite surfaces, which were tracked within surfaces in frame_surfaces.
frame_surfaces was subsequently clipped and pruned. We then crawled frame_surfaces for
composite surfaces to unlock, which were unintentionally pruned by that point.

The solution to this mess is to just track composite surfaces that are locked independently
of frame_surfaces, so no more issues with clipping.

Differential Revision: https://phabricator.services.mozilla.com/D180609
2023-06-11 02:58:26 +00:00
Mike Hommey 9e0e81fd65 Bug 1836869 - Switch malloc_size_of_derive to syn 2/synstructure 0.13. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D180019
2023-06-07 20:45:39 +00:00
Mike Hommey 71f165597b Bug 1836869 - Move malloc_size_of_derive as first-party into xpcom/rust. r=supply-chain-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D180018
2023-06-07 20:45:35 +00:00
Glenn Watson c4cb03dac3 Bug 1836693 - Fix 9-patch mask rendering for specific ellipse shapes r=gfx-reviewers,nical
Differential Revision: https://phabricator.services.mozilla.com/D179905
2023-06-07 20:16:44 +00:00
Mike Hommey b267231a30 Bug 1836232 - Switch peek-poke-derive to syn 2/synstructure 0.13. r=gfx-reviewers,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D179657
2023-06-05 22:42:30 +00:00
Sandor Molnar bab0f74659 Backed out 2 changesets (bug 1836232) for causing wr failures & build bustages. CLOSED TREE
Backed out changeset b6144804634c (bug 1836232)
Backed out changeset 12ac73585b07 (bug 1836232)
2023-06-06 01:19:29 +03:00
Sandor Molnar 08458ae843 Bug 1836232 - Fix build bustages. CLOSED TREE 2023-06-05 23:54:20 +03:00
Mike Hommey d9f6243db5 Bug 1836232 - Switch peek-poke-derive to syn 2/synstructure 0.13. r=gfx-reviewers,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D179657
2023-06-05 20:32:21 +00:00
Glenn Watson 07ab33e7c5 Bug 1836052 - Fix clip-out mode box-shadows when corner segments are culled r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D179755
2023-06-04 20:25:24 +00:00
Mike Hommey f8a28f990a Bug 1834678 - Change the llvm-config trick for cross-compilation. r=gfx-reviewers,gw
Contrary to ld64, lld doesn't ignore libraries it's given on the command
line, and -lLLVM-14 ends up as a link error when using lld.

So instead of relying on the flags llvm-config outputs to be kind of
ignored, we replace them at the source by wrapping llvm-config itself.

Differential Revision: https://phabricator.services.mozilla.com/D178900
2023-05-25 01:49:06 +00:00
Mike Hommey 3f6669c88c Bug 1834678 - Upgrade meson to 1.1.0. r=gfx-reviewers,gw
The old version that is currently used doesn't support lld for mac, and
tries to pass it flags for BFD ld (e.g. --as-needed).

For some reason meson checks fail because of some CFLAGS not being used
during the checks being reported as an error, so we make those errors
quiet.

Differential Revision: https://phabricator.services.mozilla.com/D178899
2023-05-25 01:49:06 +00:00
Glenn Watson 42ef0ea1c2 Bug 1830588 - Fix clip on fractional composite prims r=gfx-reviewers,lsalzman
Also add a test and re-enable the new clip-mask code paths.

Differential Revision: https://phabricator.services.mozilla.com/D178614
2023-05-22 21:48:13 +00:00
sotaro ebab523f1f Bug 1831820 - Do not use external compositor surface with negative scaling when compositor does not support the negative scaling r=gfx-reviewers,lsalzman
DComp video overlay does not handle negative scaling. Then the patch disables it by using CompositorCapabilities.

Differential Revision: https://phabricator.services.mozilla.com/D177726
2023-05-12 00:56:28 +00:00
Jan-Erik Rediger 9db3021bfb Bug 1828066 - Update to Glean v52.7.0 r=chutten,supply-chain-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D177617
2023-05-11 11:25:33 +00:00
Jamie Nicol 0a5648a15d Bug 1828248 - Use QCOM_tiled_rendering when rendering color and picture cache targets. r=gfx-reviewers,nical
We have seen reports that various websites, including twitter, perform
poorly on older Adreno devices due, to backdrop filter. We previously
encountered similar on Mali-G710 devices in bug 1809738, and it
appeared to be due to having to copy the contents of large
framebuffers--required to render the backdrop filter--to and from the
GPU's tile memory. On Mali we were able to avoid this penalty by
ensuring we performed an unscissored clear immediately after binding
the framebuffer, allowing the driver to omit initalizing the contents
of tile memory prior to rendering.

It's plausible that older Adreno drivers are not clever enough to be
able to make this optimization. However, there exists an extension
QCOM_tiled_rendering, which allows us to explicitly tell the driver
which subregion of a render target we are rendering too, and whether
it must be pre-initilized or post-resolved.

This patch makes use of this extension when rendering to color and
picture cache targets. In both cases we supply the region that is
being rendered and must only resolve the color attachment back to main
memory. In most cases we can additionally avoid initializing tile
memory prior to rendering, with the exception being in
draw_color_target() when we do not perform an initial clear, in which
case we must initialize the color attachment.

Unfortunately there appears to be a driver bug with this extension on
a variety of Adreno 5xx and 6xx devices, specifically on driver
version V@0490, resulting in incorrect rendering. We therefore block
usage of the extension on affected drivers, but use it elsewhere when
supported.

This results in a significant performance improvement on twitter when
tested on a Nexus 5 (Adreno 330) device.

Differential Revision: https://phabricator.services.mozilla.com/D176154
2023-05-09 10:04:53 +00:00
Glenn Watson df2450a2e9 Bug 1830691 - Temporarily disable the new clip-mask rendering path r=gfx-reviewers,jrmuizel
We have a driver-specific regression related to the shader optimizer
and also a small performance regression in a couple of tests. Rather
than back out the (large) patch set, disable the new path for now
to provide time to investigate and fix those issues.

Differential Revision: https://phabricator.services.mozilla.com/D176796
2023-05-01 22:39:35 +00:00
Natalia Csoregi f32d5f3949 Backed out changeset a578872091a4 (bug 1828248) for causing Bug 1829772. CLOSED TREE 2023-04-26 17:56:05 +03:00
Jamie Nicol 1229a40148 Bug 1828248 - Use QCOM_tiled_rendering when rendering color and picture cache targets. r=gfx-reviewers,nical
We have seen reports that various websites, including twitter, perform
poorly on older Adreno devices due, to backdrop filter. We previously
encountered similar on Mali-G710 devices in bug 1809738, and it
appeared to be due to having to copy the contents of large
framebuffers--required to render the backdrop filter--to and from the
GPU's tile memory. On Mali we were able to avoid this penalty by
ensuring we performed an unscissored clear immediately after binding
the framebuffer, allowing the driver to omit initalizing the contents
of tile memory prior to rendering.

It's plausible that older Adreno drivers are not clever enough to be
able to make this optimization. However, there exists an extension
QCOM_tiled_rendering, which allows us to explicitly tell the driver
which subregion of a render target we are rendering too, and whether
it must be pre-initilized or post-resolved.

This patch makes use of this extension when rendering to color and
picture cache targets. In both cases we supply the region that is
being rendered and must only resolve the color attachment back to main
memory. In most cases we can additionally avoid initializing tile
memory prior to rendering, with the exception being in
draw_color_target() when we do not perform an initial clear, in which
case we must initialize the color attachment.

This results in a significant performance improvement on twitter when
tested on a Nexus 5 (Adreno 330) device.

Differential Revision: https://phabricator.services.mozilla.com/D176154
2023-04-24 16:37:07 +00:00
Jamie Nicol d62fe2d0aa Bug 1828248 - Update gleam to 0.15. r=gfx-reviewers,supply-chain-reviewers,jrmuizel
This provides us with QCOM_tiled_rendering, which will be used in the
next patch in this series.

Differential Revision: https://phabricator.services.mozilla.com/D176153
2023-04-24 16:37:06 +00:00
Sandor Molnar 8ef4b76706 Backed out 2 changesets (bug 1828248) for causing wrench bustages.
Backed out changeset 7a9431bded9e (bug 1828248)
Backed out changeset 5ec09fef9385 (bug 1828248)
2023-04-24 18:22:41 +03:00
Jamie Nicol d03c4c499b Bug 1828248 - Use QCOM_tiled_rendering when rendering color and picture cache targets. r=gfx-reviewers,nical
We have seen reports that various websites, including twitter, perform
poorly on older Adreno devices due, to backdrop filter. We previously
encountered similar on Mali-G710 devices in bug 1809738, and it
appeared to be due to having to copy the contents of large
framebuffers--required to render the backdrop filter--to and from the
GPU's tile memory. On Mali we were able to avoid this penalty by
ensuring we performed an unscissored clear immediately after binding
the framebuffer, allowing the driver to omit initalizing the contents
of tile memory prior to rendering.

It's plausible that older Adreno drivers are not clever enough to be
able to make this optimization. However, there exists an extension
QCOM_tiled_rendering, which allows us to explicitly tell the driver
which subregion of a render target we are rendering too, and whether
it must be pre-initilized or post-resolved.

This patch makes use of this extension when rendering to color and
picture cache targets. In both cases we supply the region that is
being rendered and must only resolve the color attachment back to main
memory. In most cases we can additionally avoid initializing tile
memory prior to rendering, with the exception being in
draw_color_target() when we do not perform an initial clear, in which
case we must initialize the color attachment.

This results in a significant performance improvement on twitter when
tested on a Nexus 5 (Adreno 330) device.

Differential Revision: https://phabricator.services.mozilla.com/D176154
2023-04-24 15:00:17 +00:00
Jamie Nicol 08408d1bf3 Bug 1828248 - Update gleam to 0.15. r=gfx-reviewers,supply-chain-reviewers,jrmuizel
This provides us with QCOM_tiled_rendering, which will be used in the
next patch in this series.

Differential Revision: https://phabricator.services.mozilla.com/D176153
2023-04-24 15:00:16 +00:00
Sandor Molnar a311dd12da Backed out 2 changesets (bug 1828248) for causing wr bustages.
Backed out changeset d6cb8770e9ba (bug 1828248)
Backed out changeset 85d5bfd8f946 (bug 1828248)
2023-04-24 12:18:19 +03:00
Jamie Nicol d931db1911 Bug 1828248 - Use QCOM_tiled_rendering when rendering color and picture cache targets. r=gfx-reviewers,nical
We have seen reports that various websites, including twitter, perform
poorly on older Adreno devices due, to backdrop filter. We previously
encountered similar on Mali-G710 devices in bug 1809738, and it
appeared to be due to having to copy the contents of large
framebuffers--required to render the backdrop filter--to and from the
GPU's tile memory. On Mali we were able to avoid this penalty by
ensuring we performed an unscissored clear immediately after binding
the framebuffer, allowing the driver to omit initalizing the contents
of tile memory prior to rendering.

It's plausible that older Adreno drivers are not clever enough to be
able to make this optimization. However, there exists an extension
QCOM_tiled_rendering, which allows us to explicitly tell the driver
which subregion of a render target we are rendering too, and whether
it must be pre-initilized or post-resolved.

This patch makes use of this extension when rendering to color and
picture cache targets. In both cases we supply the region that is
being rendered and must only resolve the color attachment back to main
memory. In most cases we can additionally avoid initializing tile
memory prior to rendering, with the exception being in
draw_color_target() when we do not perform an initial clear, in which
case we must initialize the color attachment.

This results in a significant performance improvement on twitter when
tested on a Nexus 5 (Adreno 330) device.

Depends on D176153

Differential Revision: https://phabricator.services.mozilla.com/D176154
2023-04-24 08:43:52 +00:00
Jamie Nicol 5b6cafa983 Bug 1828248 - Update gleam to 0.15. r=gfx-reviewers,supply-chain-reviewers,jrmuizel
This provides us with QCOM_tiled_rendering, which will be used in the
next patch in this series.

Differential Revision: https://phabricator.services.mozilla.com/D176153
2023-04-24 08:43:52 +00:00
pmcmanis 8af7d4f0b9 Bug 1829236 - Update new Glean Release (52.6.0) in m-c r=chutten,supply-chain-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D176097
2023-04-21 15:11:52 +00:00
Glenn Watson 67ff166dcd Bug 1829027 - Fix clip-out rects for slow path with non-uniform radii r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D175983
2023-04-20 05:39:07 +00:00
Brad Werth 0f3fadd398 Bug 1808155 Part 4: Make ExternalNativeSurfaceKey encode the size only for non-external surfaces. r=gw
The size of the surface is irrelevant for external surfaces, since it is
handled by the native compositor with each call to AttachExternalImage. By
removing the size from the hash key, this patch ensures that real or
imagined changes to surface sizes for external surfaces will no longer
call create_compositor_external_surface, thrashing the resources of the
native compositor.

Differential Revision: https://phabricator.services.mozilla.com/D175495
2023-04-19 20:02:47 +00:00
Glenn Watson 7cb499d1d9 Bug 1823578 - Add new clip-mask rendering path r=gfx-reviewers,ahale
This adds the new infrastructure for rendering masked primitives
and uses it for simple rectangle primitives. Follow up patches
will port other primitives to it (and transformed rectangles).

Instead of rendering an alpha mask and then applying that during
picture cache rendering of content, the underlying content is
drawn to an off-screen surface, and the mask is applied on
top of that via multiplicative blending.

This is particularly helpful for applying masks to dynamically
rendered pictures in future, as we can apply the mask over the
already rendered picture without allocating an extra surface.

Since the content and mask is rendered together to a surface,
we can take advantage of this in future by caching the result
in the texture cache, rather than a temporary render target.
This means we don't need to redraw clip masks for this content
each time the surrounding area is invalidated.

Since the clip-mask is rendered in to the off-screen surface,
it is cheaper and simpler to composite the content in to the
main scene, avoiding an extra texture fetch and some tricky
fragment shader logic to sample the correct part of the mask.

To reduce the number of off-screen pixels that get drawn, the
system supports splitting the content up in to a series of
segments. This can either be a 9-patch, for the simple and
common case of a single rounded clip, or a tile grid across
the primitive. The tile grid can make it much faster to apply
large image masks, where there are often large areas that we
can determine are not affected by the mask image.

Differential Revision: https://phabricator.services.mozilla.com/D173095
2023-04-17 04:04:17 +00:00
Narcis Beleuzu 937fd1f910 Backed out changeset 4548910a12b0 (bug 1823578) as req by gwatson . CLOSED TREE 2023-04-12 22:54:32 +03:00
Travis Long c2a5c87b71 Bug 1827399 - Update Glean to v52.5.0 r=janerik,supply-chain-reviewers
Depends on D174979

Differential Revision: https://phabricator.services.mozilla.com/D175174
2023-04-12 15:55:45 +00:00
Lee Salzman 8955312c13 Bug 1820903 - Clamp initial y inside clip rect. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D174980
2023-04-12 03:51:13 +00:00
Glenn Watson afa7d91d20 Bug 1823578 - Add new clip-mask rendering path r=gfx-reviewers,ahale
This adds the new infrastructure for rendering masked primitives
and uses it for simple rectangle primitives. Follow up patches
will port other primitives to it (and transformed rectangles).

Instead of rendering an alpha mask and then applying that during
picture cache rendering of content, the underlying content is
drawn to an off-screen surface, and the mask is applied on
top of that via multiplicative blending.

This is particularly helpful for applying masks to dynamically
rendered pictures in future, as we can apply the mask over the
already rendered picture without allocating an extra surface.

Since the content and mask is rendered together to a surface,
we can take advantage of this in future by caching the result
in the texture cache, rather than a temporary render target.
This means we don't need to redraw clip masks for this content
each time the surrounding area is invalidated.

Since the clip-mask is rendered in to the off-screen surface,
it is cheaper and simpler to composite the content in to the
main scene, avoiding an extra texture fetch and some tricky
fragment shader logic to sample the correct part of the mask.

To reduce the number of off-screen pixels that get drawn, the
system supports splitting the content up in to a series of
segments. This can either be a 9-patch, for the simple and
common case of a single rounded clip, or a tile grid across
the primitive. The tile grid can make it much faster to apply
large image masks, where there are often large areas that we
can determine are not affected by the mask image.

Differential Revision: https://phabricator.services.mozilla.com/D173095
2023-04-12 00:03:19 +00:00
Cosmin Sabou 1bc387d5f5 Backed out changeset 1381726e6d29 (bug 1820903) for causing asan mochitest failures. CLOSED TREE 2023-04-11 21:08:39 +03:00
Lee Salzman 38aec6a561 Bug 1820903 - Clamp initial y inside clip rect. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D174980
2023-04-11 15:44:46 +00:00
Jamie Nicol 807600c38c Bug 1825518 - Use highp for v_color_mat varying to avoid crash on Mali-T devices. r=gfx-reviewers,lsalzman
Since landing bug 1823411 we have been receiving crash reports on a
variety of Mali-T devices when attempting to compile the brush_blend
shader. This appears to be due to changing v_color_mat to mediump,
though the reason why that crashes is currently unknown. This patch
reverts it to highp to avoid the crash.

This is being landed as-is due to being so late in the cycle, in order
to prevent crashes making it to beta. Further work should be to
determine precisely what conditions cause the crash, and add a test to
ensure we do not encounter it again.

Differential Revision: https://phabricator.services.mozilla.com/D174722
2023-04-05 16:17:19 +00:00
Glenn Watson 92919fdce0 Bug 1824891 - Remove background color and viewport size from ScenePipeline r=gfx-reviewers,ahale
Differential Revision: https://phabricator.services.mozilla.com/D173795
2023-04-02 22:51:05 +00:00