Commit Graph
163 Commits
Author SHA1 Message Date
Timothy Nikkel 71cd20867b Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond
When not using blob recordings for vector images we use simple surface providers. When we get an invalidation we will call SurfaceCache::InvalidateImage which will set a dirty bit on all blob recordings and remove all other surfaces from the surface cache. And if it finds a blob recording we will call ResumeHonoringInvalidations. This is not enough to invalidate in the case of a non-animated vector image using the webrender GetImageProvider path. Even though the surface isn't in the surface cache anymore it is still cached on the frame and when we tell it about the invalidation it will just has the image provider to update its key. That will call this code

https://searchfox.org/mozilla-central/rev/cdddec7fd690700efa4d6b48532cf70155e0386b/image/DecodedSurfaceProvider.cpp#222

which will just share the same surface as before the invalidation happened again. That will let us handle one invalidation but it still won't fix the bug, we need to call ResumeHonoringInvalidations so that we handle further invalidations.

When not using the image provider path, we don't save an image provider on the frame, that alone would avoid this problem. But we also call ResumeHonoringInvalidations for every successful call of VectorImage::Draw.

* * *
imported patch asvfref

Differential Revision: https://phabricator.services.mozilla.com/D174450
2024-05-02 01:45:32 +00:00
Jens Stutte 4f8b6438e1 Bug 1889083 - Leak image explicitly in SurfaceCache::ReleaseImageOnMainThread. r=xpcom-reviewers,nika,emilio
Differential Revision: https://phabricator.services.mozilla.com/D206346
2024-04-02 15:55:54 +00:00
Timothy Nikkel 01dd7bf966 Bug 1864550. Allow pref image.mem.max_legal_imgframe_size_kb to be live. r=gfx-reviewers,gw
This pref exists only for fuzzers so they don't waste time on overly large images. The way fuzzers set the pref requires it to be live.

Differential Revision: https://phabricator.services.mozilla.com/D198498
2024-02-02 04:42:17 +00:00
Norisz Fay 279caf61f5 Backed out changeset c5ac0dc2aa69 (bug 1864550) for causing multiple image.mem.max_legal_imgframe_size_kb related failures CLOSED TREE 2024-02-02 04:48:43 +02:00
Timothy Nikkel b16abad143 Bug 1864550. Allow pref image.mem.max_legal_imgframe_size_kb to be live. r=gfx-reviewers,gw
This pref exists only for fuzzers so they don't waste time on overly large images. The way fuzzers set the pref requires it to be live.

Differential Revision: https://phabricator.services.mozilla.com/D198498
2024-02-02 02:15:05 +00:00
Timothy Nikkel 7d230437ea Bug 1853026. Add a pref for fuzzers to limit image size so fuzzing can proceed more quickly. r=gfx-reviewers,lsalzman
Large image sizes slow down fuzzing for webp and aren't likely to catch any more issues. We will still want to fuzz without this pref to catch any large image issues though.

Differential Revision: https://phabricator.services.mozilla.com/D188156
2023-10-02 21:22:52 +00:00
Andi-Bogdan Postelnicu 18e90b4312 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
Sandor Molnar a21465caf7 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
Andi-Bogdan Postelnicu a53c65154f 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 55a9a03f95 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
Andi-Bogdan Postelnicu 75ea04501c 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
arcade ebf51b6be8 Bug 1810343 - skip implementation check of PR_GetPhysicalMemorySize on DragonFly BSD r=stransky
Differential Revision: https://phabricator.services.mozilla.com/D168350
2023-02-06 15:37:55 +00:00
Jens Stutte 15d7e0731b Bug 1797688 - Part 6: Substitute gXPCOMThreadsShutDown with InOrBeyond(XPCOMShutdownFinal) in SurfaceCacheImpl. r=xpcom-reviewers,mccr8
To release the images, `ClearReleasingImages` basically takes all the `RefPtr<Image>` out of `mReleasingImagesOnMainThread` under a lock and then clears them, all on the main thread. This can be safely done before as late as XPCOMShutdownFinal on the main thread in order to avoid leaks.

Differential Revision: https://phabricator.services.mozilla.com/D160624
2022-11-01 14:08:45 +00:00
Timothy Nikkel cfff944153 Bug 1763581. If we reset an animated image animation make sure we can always reset the animation on the AnimationSurfaceProvider if it exists. r=aosmond
If the surface cache entry is a placeholder (because we haven't decoded any frames yet) then a surface cache lookup will not return anything, so we can't get ahold of the AnimationSurfaceProvider to call reset on it.

I also looked at the other places we call Lookup on the surface cache and it seems correct to me for them to not get the surface if it's still a placeholder.

Differential Revision: https://phabricator.services.mozilla.com/D143894
2022-04-21 08:01:10 +00:00
Randell Jesup 855202c183 Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 18:47:08 +00:00
Noemi Erli 16f5f5f2b9 Backed out changeset 12a59e5a50bf (bug 1207753) for causing build bustage CLOSED TREE 2022-03-16 18:32:51 +02:00
Randell Jesup a98b1f8218 Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 16:16:14 +00:00
Butkovits Atila 01197944a0 Backed out changeset a68ee4b09f92 (bug 1207753) for causing Hazard bustages. CLOSED TREE 2022-03-16 14:38:14 +02:00
Randell Jesup fe15f2115d Bug 1207753 - Add MOZ_UNANNOTATED to all Mutexes/Monitors r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D140849
2022-03-16 12:01:14 +00:00
Timothy Nikkel f077192f43 Bug 1756696. Make sure image decoding has finished in netwerk/test/browser/browser_opaque_response_blocking_telemetry.js. r=aosmond
Because these images are loaded as embeds/objects we can't get a hold of them to apply most usual methods of waiting for decode (img.decode, using a special powers image notifications observer). This should hopefully be enough to avoid hitting this in automation.

Backout the patch for bug 1722422 (the one that changed it from an assert to a leak) because I think it's easier to classify/recognize the assert than the leak in the logs.

Differential Revision: https://phabricator.services.mozilla.com/D139464
2022-02-23 13:23:41 +00:00
Timothy Nikkel e6beddd9df Bug 1722422. Change code in SurfaceCache::ReleaseImageOnMainThread so that it doesn't assert. r=aosmond
Destroying an already_AddRefed if it holds a non-null pointers asserts because it leaks. But we want the leak here, so leak in a way that doesn't assert.

Differential Revision: https://phabricator.services.mozilla.com/D139266
2022-02-22 14:48:26 +00:00
criss 6da52286a3 Backed out changeset 9dfa7711709f (bug 1722422) for causing build bustages on SurfaceCache.cpp. CLOSED TREE 2022-02-22 16:23:55 +02:00
Timothy Nikkel d31717f6f8 Bug 1722422. Change code in SurfaceCache::ReleaseImageOnMainThread so that it doesn't assert. r=aosmond
Destroying an already_AddRefed if it holds a non-null pointers asserts because it leaks. But we want the leak here, so leak in a way that doesn't assert.

Differential Revision: https://phabricator.services.mozilla.com/D139266
2022-02-22 14:09:26 +00:00
Andrew Osmond c00eee3c26 Bug 1742051 - Allow factor-of-2 scaling for vector images without intrinsic size. r=tnikkel
If a vector image does not have an intrinsic size as returned by
VectorImage::GetWidth and VectorImage::GetHeight, currently factor-of-2
scaling is disabled. With this patch, we just assume a default size of
100x100, adjusted by the intrinsic ratio if available, to get the
baseline size for determing appropriate factor-of-2 sizes.

Differential Revision: https://phabricator.services.mozilla.com/D133395
2021-12-10 14:54:02 +00:00
Andrew Osmond c3ae3c2347 Bug 1711061 - Part 9. Add blob recording support to SurfaceCache. r=tnikkel
Now that we no longer have the extra layer of ImageContainers providing
a superficial level of caching/reuse of existing blob recordings, we
need some way to share recordings. This part adds support to
SurfaceCache to store BlobSurfaceProvider objects.

This includes the specialized code for invalidating SVG images. In
particular this is useful for animated SVG images. In general we want to
avoid changing the image key whenever possible so that we avoid
reallocating the underlying buffers in the compositor process for the
rasterized blob images.

We also need to track the ImageIntRegion used by the recording. If a
caller only wants a slice of the SVG image, then we need to track this
differentiation in our cache entries. At this time, we don't allow
substitutes for entries with a region exclusion.

Differential Revision: https://phabricator.services.mozilla.com/D126603
2021-11-27 11:47:39 +00:00
Andrew Osmond b9601f306b Bug 1711061 - Part 1. Remove SourceSurfaceMappedData surface deduplication from memory reports. r=tnikkel
We no longer use SourceSurfaceMappedData because we only support
SourceSurfaceSharedData-backed imgFrame in the SurfaceCache now.

Differential Revision: https://phabricator.services.mozilla.com/D126595
2021-11-27 11:47:36 +00:00
Sandor Molnar 5c9a4c3ee8 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 b7a0206ebb Bug 1711061 - Part 9. Add blob recording support to SurfaceCache. r=tnikkel
Now that we no longer have the extra layer of ImageContainers providing
a superficial level of caching/reuse of existing blob recordings, we
need some way to share recordings. This part adds support to
SurfaceCache to store BlobSurfaceProvider objects.

This includes the specialized code for invalidating SVG images. In
particular this is useful for animated SVG images. In general we want to
avoid changing the image key whenever possible so that we avoid
reallocating the underlying buffers in the compositor process for the
rasterized blob images.

We also need to track the ImageIntRegion used by the recording. If a
caller only wants a slice of the SVG image, then we need to track this
differentiation in our cache entries. At this time, we don't allow
substitutes for entries with a region exclusion.

Differential Revision: https://phabricator.services.mozilla.com/D126603
2021-10-27 01:24:34 +00:00
Andrew Osmond b5ae2cdd5a Bug 1711061 - Part 1. Remove SourceSurfaceMappedData surface deduplication from memory reports. r=tnikkel
We no longer use SourceSurfaceMappedData because we only support
SourceSurfaceSharedData-backed imgFrame in the SurfaceCache now.

Differential Revision: https://phabricator.services.mozilla.com/D126595
2021-10-27 01:24:31 +00:00
Sandor Molnar 8213f51c9d 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 66f5864753 Bug 1711061 - Part 9. Add blob recording support to SurfaceCache. r=tnikkel
Now that we no longer have the extra layer of ImageContainers providing
a superficial level of caching/reuse of existing blob recordings, we
need some way to share recordings. This part adds support to
SurfaceCache to store BlobSurfaceProvider objects.

This includes the specialized code for invalidating SVG images. In
particular this is useful for animated SVG images. In general we want to
avoid changing the image key whenever possible so that we avoid
reallocating the underlying buffers in the compositor process for the
rasterized blob images.

We also need to track the ImageIntRegion used by the recording. If a
caller only wants a slice of the SVG image, then we need to track this
differentiation in our cache entries. At this time, we don't allow
substitutes for entries with a region exclusion.

Differential Revision: https://phabricator.services.mozilla.com/D126603
2021-10-26 13:28:26 +00:00
Andrew Osmond b2e2d3ac42 Bug 1711061 - Part 1. Remove SourceSurfaceMappedData surface deduplication from memory reports. r=tnikkel
We no longer use SourceSurfaceMappedData because we only support
SourceSurfaceSharedData-backed imgFrame in the SurfaceCache now.

Differential Revision: https://phabricator.services.mozilla.com/D126595
2021-10-26 13:28:23 +00:00
Andrew Osmond 2817f0b969 Bug 1732115 - Part 5. Remove reorientation code from RasterImage. r=tnikkel
This is now all handled in the layers below.

Differential Revision: https://phabricator.services.mozilla.com/D126383
2021-10-06 14:41:18 +00:00
Timothy Nikkel 67dd73fd6d Bug 1719108. Check in a few places in imagelib if it's too late in shutdown to dispatch runnables. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D119712
2021-07-13 20:31:57 +00:00
Andrew Osmond ea9abeec49 Bug 1711948 - Add surfaces from image containers to the memory report. r=tnikkel
An image container can keep a surface alive longer than it can remain in
the cache, if it is indeed kept in the cache. We should cross reference
our memory report generated from the SurfaceCache against any surfaces
stored in our ImageContainer objects to ensure they are all reported.

This is of particular importance for blob recordings which are not put
into SurfaceCache. While the recordings themselves have their own memory
reporting inside of WebRender, it would be good to know what recordings
we are keeping alive from the content side to help break it down.

Differential Revision: https://phabricator.services.mozilla.com/D115517
2021-05-20 12:31:27 +00:00
Emilio Cobos Álvarez bb71e294c6 Bug 1704332 - Remove various image-orientation related prefs. r=tnikkel
These shipped in 77.

Differential Revision: https://phabricator.services.mozilla.com/D111550
2021-04-11 17:39:12 +00:00
Simon Giesecke 9e995a79e8 Bug 1184468 - Use nsBaseHashtable::Values. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D108587
2021-03-24 17:56:49 +00:00
Simon Giesecke da4eb64765 Bug 1695162 - Make nsBaseHashtable::ConstIter return a real ConstIterator. r=xpcom-reviewers,necko-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D106642
2021-03-03 08:58:53 +00:00
Simon Giesecke 95c38cc6b8 Bug 1691913 - Rename nsBaseHashtable::Put to InsertOrUpdate. r=xpcom-reviewers,necko-reviewers,jgilbert,dragana,nika
This makes the naming more consistent with other functions called
Insert and/or Update. Also, it removes the ambiguity whether
Put expects that an entry already exists or not, in particular because
it differed from nsTHashtable::PutEntry in that regard.

Differential Revision: https://phabricator.services.mozilla.com/D105473
2021-02-26 09:11:46 +00:00
Andi-Bogdan Postelnicu 144d718b52 Bug 1683557 - Make image buildable outside of unified-build environment. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D100211
2021-01-04 14:20:22 +00:00
sotaro c1c44bdec0 Bug 1651587 - Make image::Image released efficient on main thread r=aosmond
Current gecko dispatches tasks of releasing image::Image to main thread at some places. The task was dispatched individually. Then there were cases that the releasing took long time. It increased peak memory usage and caused a problem like Bug 1639280. When main thread is very busy like WebGL, it takes longer time until the Image is released on main thread. If Images are released quickly on main thread, we could reduce peak memory usage.

When SurfaceCache::ReleaseImageOnMainThread() is called, there could be already an ongoing task for releasing Image. It could reduce a duration until release on main thread.

Differential Revision: https://phabricator.services.mozilla.com/D82864
2020-07-10 14:34:01 +00:00
Cameron McCormack 28f6e5c87a Bug 1616411 - Part 4a: Make SurfaceCache aware that native image sizes can be affected by orientation. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D70983
2020-04-17 02:57:34 +00:00
Csoregi Natalia ee575ba419 Backed out 8 changesets (bug 1616411) for webgl failures on test_2_conformance__textures__misc__texture-upload-size.html. CLOSED TREE
Backed out changeset 03dd88d53439 (bug 1616411)
Backed out changeset cfee2ce9405d (bug 1616411)
Backed out changeset 0a323c33506f (bug 1616411)
Backed out changeset 1a25353a07b0 (bug 1616411)
Backed out changeset dc64af52b5f8 (bug 1616411)
Backed out changeset 0f54b1b12105 (bug 1616411)
Backed out changeset 4dee3e753e8e (bug 1616411)
Backed out changeset 034a30a6b088 (bug 1616411)
2020-04-16 05:43:16 +03:00
Cameron McCormack fa05ceed51 Bug 1616411 - Part 4a: Make SurfaceCache aware that native image sizes can be affected by orientation. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D70983
2020-04-16 00:34:39 +00:00
Andreas Farre bafa3f4262 Bug 1620594 - Part 5: Use GetMainThreadSerialEventTarget instead of SystemGroup::EventTargetFor. r=nika
This patch also tries to remove the event target entirely if it would
default to the main thread on a null event target.

Depends on D67634

Differential Revision: https://phabricator.services.mozilla.com/D67635
2020-04-07 15:17:07 +00:00
Chris Peterson 25df928c40 Bug 1625828 - Replace MOZ_MUST_USE with [[nodiscard]] in image. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D68746
2020-03-30 05:34:51 +00:00
Chris Fronk 5f4d7b6abf Bug 1143478 - Rename mozilla::Pair to CompactPair. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D64511
2020-03-17 12:42:12 +00:00
shindli acf53819f5 Backed out changeset a08637fb30c8 (bug 1143478) for causing bustages in /builds/worker/checkouts/gecko/ipc/mscom/Registration.cpp CLOSED TREE 2020-03-11 14:30:54 +02:00
Chris Fronk 3949093799 Bug 1143478 - Rename mozilla::Pair to CompactPair. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D64511
2020-03-11 12:18:13 +00:00
Andrew McCreight 611f5029e6 Bug 1609815 - Remove Web Replay C++ implementation. r=jgilbert,jandem,gbrown
Patch by bhackett and jlaster. Also reviewed by mccr8.

Differential Revision: https://phabricator.services.mozilla.com/D60197
2020-02-27 17:39:15 +00:00