Commit graph

178 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
4414d74633 Bug 1779598 - Stop passing around Maybe<SVGImageContext>. r=aosmond
All its members are optional, so we can just use it as a plain struct
rather than Maybe<> all around, which simplifies the code and prevents
silly bugs like bug 1779592.

Mostly automatic via:

  rg -l 'SVGImageContext' . | xargs sed -i 's/Maybe<SVGImageContext>/SVGImageContext/g'

With trivial build fixes.

Not intended to change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D151846
2022-07-14 16:03:25 +00:00
Timothy Nikkel
f8e1f72acb Bug 1770109. Use ConvertImageRendererToDrawFlags in nsImageRenderer::BuildWebRenderDisplayItems too. r=aosmond
Depends on D146776

Differential Revision: https://phabricator.services.mozilla.com/D146777
2022-05-22 23:09:20 +00:00
Timothy Nikkel
f735e4c4a1 Bug 1770109. Add FLAG_ASYNC_NOTIFY flag to ConvertImageRendererToDrawFlags. r=aosmond
This does not change anything as everywhere that uses ConvertImageRendererToDrawFlags goes through DrawImageInternal in nsLayoutUtils.cpp which adds the flag already. The next patch needs it though.

Depends on D146775

Differential Revision: https://phabricator.services.mozilla.com/D146776
2022-05-22 23:09:20 +00:00
Timothy Nikkel
dd3e9a6d5f Bug 1769939. Avoid a couple of unnecessary image decodes at intrinsic size in some cases. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D146687
2022-05-21 06:44:19 +00:00
Timothy Nikkel
2e15b2af1d Bug 1769195. Don't bother to try to do a partial draw of a background image if we haven't decoded any pixels. r=aosmond
The draw will be pointless, and it regresses one perf metric.

Differential Revision: https://phabricator.services.mozilla.com/D146685
2022-05-20 09:02:32 +00:00
Timothy Nikkel
92ce0b46eb Bug 1231622. Allow drawing CSS images that don't have a complete frame. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D129893
2022-05-05 08:31:08 +00:00
Nicolas Silva
50ca258be2 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
Jeff Muizelaar
b2aca21424 Bug 1755988 - Switch back to CreateSimilarDrawTarget for luminance masking. r=gfx-reviewers,aosmond
Bug 1285857 changed from using CreateSimilarDrawTarget on D2D to using a
software DrawTarget because of the need to convert the result to
luminance. However, after that bug 1417903 changed the luminance
conversion to use the IntoLuminanceSource which is supported directly by
D2D which removed the need for a software DrawTarget.

This will let us use a recording DrawTarget which will avoid serializing
the image data and is step toward switching to CreateClippedDrawTarget.

Differential Revision: https://phabricator.services.mozilla.com/D139046
2022-02-17 20:27:16 +00:00
Emilio Cobos Álvarez
81272b8d66 Bug 1753453 - Remove unused nsImageRenderer::IsAnimatedImage. r=aosmond
Drive-by cleanup.

Depends on D137762

Differential Revision: https://phabricator.services.mozilla.com/D137764
2022-02-03 17:31:41 +00:00
Andrew Osmond
99ecadd31a Bug 1748216 - Ensure that we invalidate previously decoded images without a surface ready. r=jrmuizel
Part of how invalidation works with WebRender is that we assume frames
with a WebRenderUserData object attached to them are in view. This means
for images that we must ensure we create an empty
WebRenderImageProviderData object even when we have no provider or
surface for display. This will allow us to invalidate properly when we
get the FRAME_COMPLETE notification from imagelib indicating that the
redecode has completed.

Differential Revision: https://phabricator.services.mozilla.com/D135077
2022-01-04 22:01:26 +00:00
Andrew Osmond
33641307ec Bug 1743761 - Ensure we invalidate substituted images when the preferred size is ready. r=tnikkel
Previously with ImageContainers, we would put the new preferred surface
into the ImageContainer. When we check if we should invalidate, it would
have a different image key, and hence invalidate the image frame and
schedule a paint.

With ImageProviders, it returns the same key in this case, because the
ImageProvider represents a particular surface. As such, we need to
actually track when we get a substituted ImageProvider, and invalidate
the image frame more aggressively to ensure we get the preferred size.

Differential Revision: https://phabricator.services.mozilla.com/D132583
2021-12-03 03:14:01 +00:00
Andrew Osmond
af4570762c Bug 1711061 - Part 12. Change the display list to use WebRenderImageProvider. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126605
2021-11-27 11:47:40 +00:00
Sandor Molnar
f5bbecdcc2 Backed out 13 changesets (bug 1711061) on devs request. CLOSED TREE
Backed out changeset c4f073f7e3a3 (bug 1711061)
Backed out changeset aced4b672fb4 (bug 1711061)
Backed out changeset 3687e798f665 (bug 1711061)
Backed out changeset 7b471990ea86 (bug 1711061)
Backed out changeset 1014a95f540e (bug 1711061)
Backed out changeset a37b3091281d (bug 1711061)
Backed out changeset 96a0ef35881b (bug 1711061)
Backed out changeset 38890cc266fb (bug 1711061)
Backed out changeset be73004c0850 (bug 1711061)
Backed out changeset b964576ae53d (bug 1711061)
Backed out changeset d453c5219255 (bug 1711061)
Backed out changeset 0145b538175b (bug 1711061)
Backed out changeset 41ba2e2a2d13 (bug 1711061)
2021-10-29 00:36:30 +03:00
Andrew Osmond
c6eb106f04 Bug 1711061 - Part 12. Change the display list to use WebRenderImageProvider. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126605
2021-10-27 01:24:35 +00:00
Sandor Molnar
6632079d8d Backed out 13 changesets (bug 1711061) for causing browser-chrome failures in test/performance/browser_startup_images. CLOSED TREE
Backed out changeset 5988220f56b8 (bug 1711061)
Backed out changeset cb7721d7ce49 (bug 1711061)
Backed out changeset 343746ffae73 (bug 1711061)
Backed out changeset 000940244dcf (bug 1711061)
Backed out changeset 27565d5ae08d (bug 1711061)
Backed out changeset f3b2379d971b (bug 1711061)
Backed out changeset d4b3d0fa1771 (bug 1711061)
Backed out changeset 9af5b3f2225f (bug 1711061)
Backed out changeset da992effeff1 (bug 1711061)
Backed out changeset 6b2bc6c16b9f (bug 1711061)
Backed out changeset ac2792d42be2 (bug 1711061)
Backed out changeset cb00177e655e (bug 1711061)
Backed out changeset 8d5261184226 (bug 1711061)
2021-10-26 18:04:34 +03:00
Andrew Osmond
0ac282d26a Bug 1711061 - Part 12. Change the display list to use WebRenderImageProvider. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126605
2021-10-26 13:28:27 +00:00
Emilio Cobos Álvarez
70f53c85d4 Bug 856337 - Implement image-rendering: smooth and image-rendering: pixelated. r=jrmuizel,dholbert,longsonr
Also, more directly go from StyleImageRendering to wr::ImageRendering.

 * image-rendering: smooth the non-deprecated version of
   OptimizeQuality, which maps to SamplingFilter::LINEAR /
   wr::ImageRendering::Auto (which uses gl::LINEAR).

 * image-rendering: pixelated maps to wr::ImageRendering::Pixelated /
   SamplingFilter::POINT which is the same crisp-edges does.

Note that this uncovers that we were mapping image-rendering:
crisp-edges to wr::ImageRendering::Pixelated.

I'm going to preserve behavior on this patch but we should consider
switching that to map to wr::ImageRendering::CrispEdges on a
follow-up (filed bug 1728831 for this).

Differential Revision: https://phabricator.services.mozilla.com/D124378
2021-09-03 08:56:43 +00:00
Noemi Erli
f3a236c514 Backed out 2 changesets (bug 856337) for causing xpcshell failures in test_css-properties-db.js CLOSED TREE
Backed out changeset 7070c7cea8ec (bug 856337)
Backed out changeset edc12b36439f (bug 856337)
2021-09-03 01:36:17 +03:00
Andrew Osmond
e9c57362fa Bug 1728890 - Remove unused ImageContainer related image code. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D124396
2021-09-02 21:46:14 +00:00
Emilio Cobos Álvarez
1602724fa9 Bug 856337 - Implement image-rendering: smooth and image-rendering: pixelated. r=jrmuizel,dholbert,longsonr
Also, more directly go from StyleImageRendering to wr::ImageRendering.

 * image-rendering: smooth the non-deprecated version of
   OptimizeQuality, which maps to SamplingFilter::LINEAR /
   wr::ImageRendering::Auto (which uses gl::LINEAR).

 * image-rendering: pixelated maps to wr::ImageRendering::Pixelated /
   SamplingFilter::POINT which is the same crisp-edges does.

Note that this uncovers that we were mapping image-rendering:
crisp-edges to wr::ImageRendering::Pixelated.

I'm going to preserve behavior on this patch but we should consider
switching that to map to wr::ImageRendering::CrispEdges on a
follow-up (filed bug 1728831 for this).

Differential Revision: https://phabricator.services.mozilla.com/D124378
2021-09-02 20:28:39 +00:00
Nicolas Silva
2be01aafa4 Bug 1711648 - Move LayoutRect to the Box2D representation. r=jrmuizel.
Differential Revision: https://phabricator.services.mozilla.com/D117293
2021-06-11 13:33:10 +00:00
Alexandru Michis
b9be72a526 Backed out 6 changesets (bug 1711648) for causing crashes in FrameBuilder.
CLOSED TREE

Backed out changeset 0384828b36cc (bug 1711648)
Backed out changeset 15d8e0d681ef (bug 1711648)
Backed out changeset b27d8421ebc5 (bug 1711648)
Backed out changeset 12da58f4ac4f (bug 1711648)
Backed out changeset 1d4c0b685f0e (bug 1711648)
Backed out changeset 367235e897e3 (bug 1711648)
2021-06-10 18:28:27 +03:00
Nicolas Silva
69c80ddaa7 Bug 1711648 - Move LayoutRect to the Box2D representation. r=jrmuizel.
Differential Revision: https://phabricator.services.mozilla.com/D117293
2021-06-10 13:07:34 +00:00
Marian-Vasile Laza
5dc1a42e67 Backed out 6 changesets (bug 1711648) for causing build bustages.
CLOSED TREE

Backed out changeset a803c960b909 (bug 1711648)
Backed out changeset d07c38d536c5 (bug 1711648)
Backed out changeset 823b75fc8c3c (bug 1711648)
Backed out changeset 602a2bcc5e29 (bug 1711648)
Backed out changeset 99ce7c7e458d (bug 1711648)
Backed out changeset bdbc65799b8a (bug 1711648)
2021-06-10 12:25:48 +03:00
Nicolas Silva
6cdbec834a Bug 1711648 - Move LayoutRect to the Box2D representation. r=jrmuizel.
Differential Revision: https://phabricator.services.mozilla.com/D117293
2021-06-10 08:08:07 +00:00
Brad Werth
8695def8cc Bug 1669840 Part 2: Make nsImageRenderer::BuildWebRenderDisplayItems premultiply alpha with provided opacity. r=miko,jrmuizel
Depends on D92941

Differential Revision: https://phabricator.services.mozilla.com/D103130
2021-05-23 00:09:03 +00:00
Noemi Erli
e861fde400 Backed out 4 changesets (bug 1669840) for causing reftest failures in opacity-background-1.html CLOSED TREE
Backed out changeset b0dc93c36fb5 (bug 1669840)
Backed out changeset dc8740f5d193 (bug 1669840)
Backed out changeset 17d1706271a9 (bug 1669840)
Backed out changeset a4d21aa2f97d (bug 1669840)
2021-05-21 02:51:14 +03:00
Brad Werth
930e22f764 Bug 1669840 Part 2: Make nsImageRenderer::BuildWebRenderDisplayItems premultiply alpha with provided opacity. r=miko,jrmuizel
Depends on D92941

Differential Revision: https://phabricator.services.mozilla.com/D103130
2021-05-20 21:02:52 +00:00
Noemi Erli
fadafafe08 Backed out 4 changesets (bug 1669840) for causing reftest failures in border-collapse-opacity-table-row-group.html CLOSED TREE
Backed out changeset be66ef46592b (bug 1669840)
Backed out changeset 31dfd306b953 (bug 1669840)
Backed out changeset 7716542373a3 (bug 1669840)
Backed out changeset 8444d88d1869 (bug 1669840)
2021-05-20 21:00:20 +03:00
Brad Werth
db18607781 Bug 1669840 Part 2: Make nsImageRenderer::BuildWebRenderDisplayItems premultiply alpha with provided opacity. r=miko,jrmuizel
Depends on D92941

Differential Revision: https://phabricator.services.mozilla.com/D103130
2021-05-20 15:59:05 +00:00
Andrew Osmond
a140512abd Bug 1704792 - Part 7. Integrate use of ImageIntRegion with WebRender display lists. r=jrmuizel
This patch hooks up the ImageIntRegion to the blob recording and makes
any necessary adjusts to the display list creation to take advantage of
it.

Differential Revision: https://phabricator.services.mozilla.com/D114986
2021-05-13 16:24:08 +00:00
Andrew Osmond
879f78a8df Bug 1704792 - Part 5. Add plumbing to move/store ImageIntRegion. r=jrmuizel
This patch has no functional change beyond changing prototypes and
adding storage for ImageIntRegion for each ImageContainer.

Differential Revision: https://phabricator.services.mozilla.com/D114984
2021-05-13 16:24:07 +00:00
Andrew Osmond
c82b7d67c2 Bug 1704792 - Part 3. Make display list items request blobs for SVG images. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D111838
2021-05-13 16:24:07 +00:00
Emilio Cobos Álvarez
1cdf344860 Bug 1680387 - Apply intrinsic image resolution as appropriate in layout/style/dom, and update test expectations. r=tnikkel
This should be mostly straight-forward, since we have code for this
anyways for image-set() and srcset.

The only thing is that we were using floats for resolution, but since
EXIF allows you to scale each axis separately, we now need to pass an
image::Resolution instead.

The main outstanding issue is the spec comment mentioned in the previous
patch, about what happens if you have srcset/image-set and the image
density specified together. For now I've implemented what the
image-set() spec says, but this is subject to change before shipping of
course.

Differential Revision: https://phabricator.services.mozilla.com/D113265
2021-05-05 09:41:24 +00:00
Iulian Moraru
b21df91635 Backed out 3 changesets (bug 1680387) for causing browser chrome failures on browser_bug592641.js. CLOSED TREE
Backed out changeset 65616921e520 (bug 1680387)
Backed out changeset 51531850a9a2 (bug 1680387)
Backed out changeset 0c1c5e1f901b (bug 1680387)
2021-05-04 16:28:17 +03:00
Emilio Cobos Álvarez
11ad9c7bcd Bug 1680387 - Apply intrinsic image resolution as appropriate in layout/style/dom, and update test expectations. r=tnikkel
This should be mostly straight-forward, since we have code for this
anyways for image-set() and srcset.

The only thing is that we were using floats for resolution, but since
EXIF allows you to scale each axis separately, we now need to pass an
image::Resolution instead.

The main outstanding issue is the spec comment mentioned in the previous
patch, about what happens if you have srcset/image-set and the image
density specified together. For now I've implemented what the
image-set() spec says, but this is subject to change before shipping of
course.

Differential Revision: https://phabricator.services.mozilla.com/D113265
2021-05-04 10:24:07 +00:00
Emilio Cobos Álvarez
8e47e5abc2 Bug 1705877 - image-set() should influence intrinsic size of the image. r=dholbert,layout-reviewers
https://drafts.csswg.org/css-images-4/#image-set-notation has:

> [...] it also specifies the image’s natural resolution, overriding any other
> source of data that might supply a natural resolution.

Astounding that there was literally no WPT for this at all. I added three: one
for backgrounds, one for list-style-image, and one for `content`. Cursor is not
handled on this patch because that one requires a fair amount of extra work.

Differential Revision: https://phabricator.services.mozilla.com/D112474
2021-04-19 19:55:27 +00:00
Ryan VanderMeulen
d2aa8e51a1 Backed out 3 changesets (bug 1669840) for causing bug 1696761.
Backed out changeset c648cec12f77 (bug 1669840)
Backed out changeset b4f43fdd6d04 (bug 1669840)
Backed out changeset 1582820076e0 (bug 1669840)

CLOSED TREE
2021-03-18 17:54:58 -04:00
Brad Werth
78d0e5055a Bug 1669840 Part 2: Make nsImageRenderer::BuildWebRenderDisplayItems premultiply alpha with provided opacity. r=miko,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D103130
2021-02-04 22:50:23 +00:00
Dorel Luca
a1856858c7 Backed out 3 changesets (bug 1669840) for Reftest failures in layout/reftests/layers/opacity-background-1.html. CLOSED TREE
Backed out changeset 7ceccf133786 (bug 1669840)
Backed out changeset d54787a62ba0 (bug 1669840)
Backed out changeset 396931075ff1 (bug 1669840)
2021-02-04 03:43:58 +02:00
Brad Werth
d58c06fce5 Bug 1669840 Part 2: Make nsImageRenderer::BuildWebRenderDisplayItems premultiply alpha with provided opacity. r=miko,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D103130
2021-02-03 18:55:58 +00:00
Noemi Erli
bdac6f3dba Backed out 2 changesets (bug 1669840) for causing reftest failures CLOSED TREE
Backed out changeset 55707a03f41d (bug 1669840)
Backed out changeset 555f8ed5cc85 (bug 1669840)
2021-02-02 19:21:34 +02:00
Brad Werth
fb2ec3dcc6 Bug 1669840 Part 2: Make nsImageRenderer::BuildWebRenderDisplayItems premultiply alpha with provided opacity. r=miko,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D103130
2021-02-02 12:46:27 +00:00
Emilio Cobos Álvarez
f70b32956b Bug 1685796 - Return BAD_IMAGE when sync-decoding an incomplete, errored image. r=tnikkel
The only way that this can happen is if we get through the
ShouldTreatAsCompleteDueToSyncDecode check returning true in the case of
the image being errored.

https://hg.mozilla.org/integration/autoland/rev/645a4d6461ca was
supposed to deal with this, but my guess is that there is a slight race
condition in which the error status isn't there at the beginning, but is
there after the StartDecoding call.

It seems returning BAD_IMAGE rather than painting transparent if we hit
a broken image is a better thing to do than what we're doing now, and
should fix the intermittent issue.

Differential Revision: https://phabricator.services.mozilla.com/D101361
2021-01-12 02:28:00 +00:00
Emilio Cobos Álvarez
ff64e2ac94 Bug 1684909 - Make rendering aware of image-set(). r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D100700
2021-01-11 01:23:07 +00:00
Emilio Cobos Álvarez
3bc6746c91 Bug 1684770 - Implement parsing and serialization for most of image-set(). r=boris
This implements the basic image-set notation without the format()
function (for simplicity).

There's a remaining serialization issue (we should probably skip 1x
resolutions), but that's fine for now, I'll address this in a follow-up
when the feature is testable.

The intention is to do the image selection at computed value time
(keeping a selected index or such), but same, follow-up.

This also fixes an issue where the cors-mode for -moz-image-rect and
cross-fade() was getting ignored when parsing.

Differential Revision: https://phabricator.services.mozilla.com/D100640
2021-01-07 04:15:29 +00:00
Botond Ballo
01b3c7969d Bug 1667594 - Move nsLayoutUtils::RectCallback to namespace scope. r=emilio,jgilbert
This allows it to be forward-declared (while a nested class cannot be),
such that headers files that use RectCallback by pointer or reference
do not need to include nsLayoutUtils.h.

This avoids including nsLayoutUtils.h in nsRange.h.

Differential Revision: https://phabricator.services.mozilla.com/D91685
2020-09-30 21:06:47 +00:00
Matt Woodrow
02b6ed52b4 Bug 1656817 - Don't create WebRender gradient items for empty gradients. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D86891
2020-08-14 00:56:35 +00:00
Csoregi Natalia
8896454838 Backed out 4 changesets (bug 1656817, bug 1656818, bug 1658858) for bustage on RendererOGL.cpp. CLOSED TREE
Backed out changeset 9c8e4ec4e47c (bug 1656818)
Backed out changeset 92252cfd26de (bug 1656818)
Backed out changeset 1bebb79150d6 (bug 1656817)
Backed out changeset e1becb3a2fb5 (bug 1658858)
2020-08-14 00:25:44 +03:00
Matt Woodrow
4795ba88e8 Bug 1656817 - Don't create WebRender gradient items for empty gradients. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D86891
2020-08-13 20:42:42 +00:00