Commit graph

4665 commits

Author SHA1 Message Date
Lee Salzman
6accc1036c Bug 1873075 - Delay UnregisterTextureOwner until all potential UseRemoteTextures are received. r=aosmond
UnregisterTextureOwner, if called before any use of UseRemoteTexture, can cause UseRemoteTexture to wait
for the texture owner to be created, since the texture owner does not exist, and there is no evidence it
was previously unregistered.

This patch attempts to address the issue by delaying the actual UnregisterTextureOwner until all such
UseRemoteTexture instances are processed. This is accomplished by noting that UseRemoteTexture ops come
in via transactions from a CompositableForwarder and so all are associated with a forwarder transaction
with a FwdTransactionId. RecordedTextureData on destruction reports the last FwdTransactionId associated
with its final UseRemoteTexture before it attempts to call UnregisterTextureOwner. If RemoteTextureMap
has not been notified of a given FwdTransactionId yet, then the UnregisterTextureOwner call will be
deferred until it has seen this FwdTransactionId.

This adds a RemoteTextureTxnScheduler to track the issuing of dependencies and waiting for FwdTransactionIds.

This patch also cleans up the issuing of FwdTransactionIds themselves to be associated with a given
top-level protocol so that all sub-protocols have transaction numbers that can be safely compared amongst
each other. This makes dependency expiration more robust since any advancement of the transaction number
from any source can help retire expired dependencies.

Differential Revision: https://phabricator.services.mozilla.com/D197895
2024-01-09 11:53:14 +00:00
Natalia Csoregi
b2289eef93 Backed out changeset 9c4ce17422de (bug 1867360) for causing crashes on PRemoteQuotaObjectChild. CLOSED TREE 2024-01-08 23:18:19 +02:00
Nika Layzell
c4aa6e4813 Bug 1867360 - Require toplevel protocols to specify which processes they expect to be bound in, r=decoder,ipc-reviewers,necko-reviewers,media-playback-reviewers,profiler-reviewers,win-reviewers,aosmond,rkraesig,mccr8,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D195485
2024-01-08 19:48:23 +00:00
sotaro
cbf0e5ea15 Bug 1868927 - Remove RemoteTextureHostWrapper's async mode r=gfx-reviewers,lsalzman
By removing the async mode, remote texture implementation becomes simpler.

Differential Revision: https://phabricator.services.mozilla.com/D197323
2024-01-07 22:47:05 +00:00
Lee Salzman
8a291077ea Bug 1872646 - Only use DrawTargetWebgl::BeginFrame when actually mutating a canvas. r=aosmond
It's wasteful to call DrawTargetWebgl::BeginFrame if we're locking in a read-only mode. It may
also mess up DrawTargetWebgl's internal profiling if we count a read-only use as an actual frame.

Differential Revision: https://phabricator.services.mozilla.com/D197483
2024-01-02 19:35:04 +00:00
Lee Salzman
f9e6ed2f41 Bug 1872522 - Decouple recorded texture locking from presentation. r=aosmond,gfx-reviewers
The idea of trying to obsolete the presented texture from the last frame when
creating a new texture, if we believe it wasn't used, seems problematic and
may not actually address the fundamental issue at hand.

It seems more like there are use-cases where the recorded texture is locked
and unlocked many times in succession, whereas we actually only intend to
present it once.

This decouples the TextureLock/TextureUnlock events from a new PresentTexture
event which handles the actual creation of remote texture ids, so that regardless
of how many times we lock/unlock the recorded texture, we don't actually churn
presentation unless we truly need to. This seems like a better way of addressing
the memory reuse issue than trying to remove textures since we don't create them
in the first place.

Differential Revision: https://phabricator.services.mozilla.com/D197453
2023-12-31 19:09:20 +00:00
Lee Salzman
b1d89237e5 Bug 1872327 - Don't leak runnables on shutdown in nsThreadPool. r=aosmond
It looks like this was an oversight in bug 1155059, that in one place an
already_AddRefed does not get converted to a RefPtr.

Differential Revision: https://phabricator.services.mozilla.com/D197374
2023-12-29 06:37:44 +00:00
Lee Salzman
c4905b4957 Bug 1872159 - Remove assert in CanvasTranslator::FinishShutdown. r=aosmond
While the assert is well-intentioned, it is mostly just causing more problems
than it solves. Due to the nature of shutdown, are in a partially shutdown state
where sCanvasRenderThread goes away, even though the CanvasRender thread still
exists and is processing the last events in the queue. Because of this, the assert
fails, even though we are actually on the correct thread. It seems reasonable here
to just remove the assert in FinishShutdown, since ActorDestroy already verifies
we are on the correct thread.

Depends on D197374

Differential Revision: https://phabricator.services.mozilla.com/D197375
2023-12-28 20:45:30 +00:00
Norisz Fay
4d542e529c Backed out 3 changesets (bug 1872087, bug 1767344, bug 1872159) for causing gpu related leak failures CLOSED TREE
Backed out changeset 2c0ef884644c (bug 1872087)
Backed out changeset 0cf50076e7ee (bug 1872159)
Backed out changeset a4148511920c (bug 1767344)
2023-12-28 21:24:33 +02:00
Lee Salzman
cfae6da88d Bug 1872159 - Remove assert in CanvasTranslator::FinishShutdown. r=aosmond
While the assert is well-intentioned, it is mostly just causing more problems
than it solves. Due to the nature of shutdown, are in a partially shutdown state
where sCanvasRenderThread goes away, even though the CanvasRender thread still
exists and is processing the last events in the queue. Because of this, the assert
fails, even though we are actually on the correct thread. It seems reasonable here
to just remove the assert in FinishShutdown, since ActorDestroy already verifies
we are on the correct thread.

Depends on D197374

Differential Revision: https://phabricator.services.mozilla.com/D197375
2023-12-28 16:31:07 +00:00
Lee Salzman
322f03f420 Bug 1872087 - Share recycled texture data across remote texture owners on a single client. r=sotaro,gfx-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D197324
2023-12-27 14:56:24 +00:00
sotaro
2c1cb667af Bug 1871744 - Remove ALLOC_MANUAL_SYNCHRONIZATION in CanvasTranslator::CreateTextureData() r=gfx-reviewers,lsalzman
ALLOC_MANUAL_SYNCHRONIZATION could be used only when ID3D11Texture2D is allocated by compositor device. But canvas device is not compositor device.

Differential Revision: https://phabricator.services.mozilla.com/D197276
2023-12-26 07:50:08 +00:00
Lee Salzman
bdfc369603 Bug 1871811 - Keep texture datas locked over lifetime in CanvasTranslator. r=gfx-reviewers,sotaro
Differential Revision: https://phabricator.services.mozilla.com/D197282
2023-12-26 07:48:24 +00:00
Lee Salzman
08899071a2 Bug 1871811 - Restore some locking in CanvasTranslator. r=aosmond,gfx-reviewers
It seems that locking has side-effect other than synchronization for
some backends, such as mapping data into readable/writeable memory. We
need to leave the lock calls in place, but so long as we leave
ALLOC_MANUAL_SYNCHRONIZATION in place for D2D, we will avoid created
a KeyedMutex which should still avoid synchronization overheads.

Meanwhile, incidental finding that a bug was caused by 1861605,
meaning KeyedMutexes stopped getting properly initialized in any case.
This fixes that too.

Differential Revision: https://phabricator.services.mozilla.com/D197271
2023-12-25 17:07:34 +00:00
Lee Salzman
f374a44fba Bug 1871841 - Unregister remote texture owner when removing texture id. r=gfx-reviewers,jnicol
When we use a TextureData instead of a DrawTargetWebgl, we manually register a remote
texture owner on CanvasTranslator's RemoteTextureOwnerClient. Unlike DrawTargetWebgl,
this client will stick around after the texture info goes away, so we need to also
manually unregister it when removing a texture id.

Differential Revision: https://phabricator.services.mozilla.com/D197264
2023-12-25 09:43:57 +00:00
Andrew Osmond
484b8d4e39 Bug 1871613 - Ensure CanvasDrawEventRecorder releases external surface dependencies. r=gfx-reviewers,lsalzman
This patch makes CanvasDrawEventRecorder track what eventCount we
recorded an external surface reference. When the reader has increment
its processedCount above that, we will release our reference as it
should have acquired a strong reference to the data. This was previously
done when we forwarded the texture, but with remote textures, we no
longer have this event. Now we check when we start a new recording, or
attempt to clear cached resources.

Differential Revision: https://phabricator.services.mozilla.com/D197216
2023-12-23 01:34:31 +00:00
Lee Salzman
ed813ec18d Bug 1871467 - Remove unnecessary CanvasTranslator locking. r=aosmond CLOSED TREE
Differential Revision: https://phabricator.services.mozilla.com/D197112
2023-12-22 04:58:16 +00:00
Lee Salzman
21c66faafe Bug 1871467 - Remove unused ReplayTexture support. r=aosmond CLOSED TREE
Differential Revision: https://phabricator.services.mozilla.com/D197106
2023-12-22 04:58:16 +00:00
Lee Salzman
2755ca2726 Bug 1871467 - Use RemoteTextureMap for D2D canvas. r=aosmond CLOSED TREE
Differential Revision: https://phabricator.services.mozilla.com/D197101
2023-12-22 04:58:15 +00:00
Natalia Csoregi
f885d9e42d Backed out 3 changesets (bug 1871467) for causing reftest failures on transformations-1.html. CLOSED TREE
Backed out changeset 1b02448b1e9b (bug 1871467)
Backed out changeset 0fd0c31a5140 (bug 1871467)
Backed out changeset a1c8e8621bdd (bug 1871467)
2023-12-22 10:12:28 +02:00
Lee Salzman
ede9017e83 Bug 1871467 - Remove unnecessary CanvasTranslator locking. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D197112
2023-12-22 04:58:16 +00:00
Lee Salzman
19d5e9ffdd Bug 1871467 - Remove unused ReplayTexture support. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D197106
2023-12-22 04:58:16 +00:00
Lee Salzman
f3ffc78271 Bug 1871467 - Use RemoteTextureMap for D2D canvas. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D197101
2023-12-22 04:58:15 +00:00
Andrew Osmond
417216a29c Bug 1870957 - Part 3. Make CanvasManagerChild manage ActiveResourceTracker. r=gfx-reviewers,lsalzman
This patch makes the CanvasManagerChild creates/manager the
ActiveResourceTracker instead of the WebRenderBridgeChild. Since PCanvas
is now managed by PCanvasManager, and ActiveResourceTracker is only used
by the PCanvas recording plumbing, we need it on every thread that the
CanvasManagerChild can be created.

Differential Revision: https://phabricator.services.mozilla.com/D189529
2023-12-20 13:01:19 +00:00
Andrew Osmond
0837c517ad Bug 1870957 - Part 1. Add/update owning thread assertions to CanvasChild/DrawEventRecorder. r=gfx-reviewers,lsalzman
This patch adds/updates the thread assertion plumbing for CanvasChild
and DrawEventRecorder to ensure that we are always accessing them on the
owning thread. It also now makes these checks compatible with running in
a DOM worker context for OffscreenCanvas using recordings.

Differential Revision: https://phabricator.services.mozilla.com/D189526
2023-12-20 13:01:18 +00:00
Andrew Osmond
7e26113e23 Bug 1870950 - Cleanup CanvasTranslator texture locking and unlocking. r=gfx-reviewers,lsalzman
This patch resolves a bunch of edge cases that may never happen,
but where we do not properly lock or unlock. It also adds more
critical notes in these cases so that we can better understand
texture locking failures.

Differential Revision: https://phabricator.services.mozilla.com/D196926
2023-12-20 00:50:14 +00:00
Randell Jesup
4d59b51bb2 Bug 1870086: Add thread-safety annotations to CompositorBridgeParent r=gfx-reviewers,aosmond
Differential Revision: https://phabricator.services.mozilla.com/D142083
2023-12-19 23:14:05 +00:00
Lee Salzman
1bb52a690c Bug 1829026 - Remove waiting texture ids if nothing uses them. r=aosmond
We can accumulate a bunch of waiting texture ids that never actually get
composited. By the time we go to lock a successive canvas frame, if nothing
has queried a surface descriptor for the preceding frame, it is safe to assume
that the canvas frame will never be rendered, since any record of its texture
id has been erased. In this case, we want to remove the resources allocated
to that texture immediately from the host side rather than let it sit around
indefinitely, in case no composition ever occurs.

Differential Revision: https://phabricator.services.mozilla.com/D196850
2023-12-19 15:44:41 +00:00
Narcis Beleuzu
272c5888a0 Merge central to autoland. CLOSED TREE 2023-12-19 17:39:20 +02:00
Noemi Erli
7b97e142d0 Backed out 12 changesets (bug 1795296, bug 1855742) as requested by aosmond a=backout
Backed out changeset 05b607c3bbe6 (bug 1795296)
Backed out changeset 7704291111b4 (bug 1855742)
Backed out changeset db60743295fb (bug 1855742)
Backed out changeset 8ed51e7d1c98 (bug 1855742)
Backed out changeset 40cba2c51b1c (bug 1855742)
Backed out changeset d4bfe15c07ec (bug 1855742)
Backed out changeset 2061271c53e8 (bug 1855742)
Backed out changeset 5b2a89a61f7f (bug 1855742)
Backed out changeset 2028c7018977 (bug 1855742)
Backed out changeset 13e806495fb8 (bug 1855742)
Backed out changeset 4bfa0d4913a2 (bug 1855742)
Backed out changeset 711b3f47e380 (bug 1855742)
2023-12-19 17:25:55 +02:00
sotaro
7d06300567 Bug 1861605 - Use IDXGIResource1::CreateSharedHandle() instead of IDXGIResource::GetSharedHandle() r=gfx-reviewers,lsalzman
gecko uses IDXGIResource::GetSharedHandle(). But it is recommend not to use anymore to retrieve the handle to a shared resource.
IDXGIResource1::CreateSharedHandle() with D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag should be used instead of the GetSharedHandle().

The CreateSharedHandle() could be called only once for a shared resource. Later calls fail.

HANDLEs of ID3D11Texture2D are replaced by gfx::FileHandleWrappers.

Differential Revision: https://phabricator.services.mozilla.com/D192173
2023-12-19 09:23:21 +00:00
Andrew Osmond
13cc2c3b57 Bug 1855742 - Part 11. Allow recording based canvases with OffscreenCanvas. r=gfx-reviewers,lsalzman
It is disabled in this patch via the gfx.canvas.remote.allow-offscreen
pref. A follow up patch will enable this by default.

Differential Revision: https://phabricator.services.mozilla.com/D189532
2023-12-19 05:10:35 +00:00
Andrew Osmond
160c68efc3 Bug 1855742 - Part 10. Allow recording surfaces and textures to be created on DOM workers. r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D189531
2023-12-19 05:10:35 +00:00
Andrew Osmond
09f7cdee80 Bug 1855742 - Part 9. Allow CanvasDrawEventRecorder to be created on DOM workers. r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D189530
2023-12-19 05:10:34 +00:00
Andrew Osmond
4f7d4e8030 Bug 1855742 - Part 6. Ensure that CanvasChild::OnTextureForwarded can be called from forwarder thread. r=lsalzman
If ImageBridgeChild is responsible for the textures being forwarded to
the compositor process, then the callback will happen on
ImageBridgeChild's thread instead of the main or DOM worker thread.

Differential Revision: https://phabricator.services.mozilla.com/D195121
2023-12-19 05:10:33 +00:00
Andrew Osmond
fca521d398 Bug 1855742 - Part 4. Make CanvasManagerChild manage ActiveResourceTracker. r=gfx-reviewers,lsalzman
This patch makes the CanvasManagerChild creates/manager the
ActiveResourceTracker instead of the WebRenderBridgeChild. Since PCanvas
is now managed by PCanvasManager, and ActiveResourceTracker is only used
by the PCanvas recording plumbing, we need it on every thread that the
CanvasManagerChild can be created.

Differential Revision: https://phabricator.services.mozilla.com/D189529
2023-12-19 05:10:32 +00:00
Andrew Osmond
370628c3b8 Bug 1855742 - Part 3. Implement ImageBridgeChild::GetTileLockAllocator. r=gfx-reviewers,lsalzman
This patch adds support for allocationg shmem sections for
ImageBridgeChild. The recording infrastructure depends on it.

Differential Revision: https://phabricator.services.mozilla.com/D189528
2023-12-19 05:10:32 +00:00
Andrew Osmond
2cd5b292c7 Bug 1855742 - Part 1. Add/update owning thread assertions to CanvasChild/DrawEventRecorder. r=gfx-reviewers,lsalzman
This patch adds/updates the thread assertion plumbing for CanvasChild
and DrawEventRecorder to ensure that we are always accessing them on the
owning thread. It also now makes these checks compatible with running in
a DOM worker context for OffscreenCanvas using recordings.

Differential Revision: https://phabricator.services.mozilla.com/D189526
2023-12-19 05:10:31 +00:00
Butkovits Atila
a28566bdd4 Backed out changeset 30210e0efac1 (bug 1867360) for causing failures at PIPDLUnitTestChild.cpp. CLOSED TREE 2023-12-19 02:28:52 +02:00
Nika Layzell
3bf610ffc2 Bug 1867360 - Require toplevel protocols to specify which processes they expect to be bound in, r=decoder,ipc-reviewers,necko-reviewers,media-playback-reviewers,profiler-reviewers,win-reviewers,aosmond,rkraesig,mccr8,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D195485
2023-12-18 23:24:26 +00:00
Andrew Osmond
494d196113 Bug 1870683 - Ensure CanvasChild::EnsureDataSurfaceShmem checks for uninitialized state. r=gfx-reviewers,lsalzman
If we fail to create CanvasChild::mRecorder, we shouldn't attempt to
readback a recording surface that never got created.

Differential Revision: https://phabricator.services.mozilla.com/D196767
2023-12-18 20:01:48 +00:00
Lee Salzman
5b34ab7937 Bug 1829026 - Update CanvasTranslator to work with DrawTargetWebgl. r=aosmond
This adds the necessary infrastructure for CanvasTranslator to allocate DrawTargetWebgl
instead of just allocating TextureData, and to use RemoteTextureMap to handle sending
the DrawTargetWebgl frames to the compositor.

This optimizes snapshot transport to use fewer copies to and from shmems when we know
the snapshot contents can be sourced from a shmem.

This adds a blocking mechanism separate from deactivation so that existing DrawTargetWebgls
can continue processing events while denying further ones from being created in the event
that allocating further DrawTargetWebgls might cause problems, but so that we don't disrupt
canvases that are already in flight.

PersistentBufferProviderAccelerated still remains the buffer provider for the new setup,
but just allocates a single RecordedTextureData internally. Since DrawTargetWebgl already
does its own swap chain management internally, we do not want to use the multiple texture
client strategy that PersistentBufferProviderShared does.

This adds a fallback mechanism such that if DrawTargetWebgl allocation fails, a TextureData
is allocated instead that still sends results to RemoteTextureMap. This has the advantage
that we don't need to synchronously block in the content process to verify if acceleration
succeeded, as the costs of such blocking are rather extreme and we must still produce the
rendered frame to ensure the user sees the correct result if the speculative acceleration
failed. It then notifies the content process asynchronously via the refresh mechanism to
try to recreate a non-accelerated buffer provider when it is ready.

There is one additional hitch in RemoteTextureMap that we need to add a mechanism to deal
with the setup of the RemoteTextureOwner. When display list building initially needs to get
the remote texture, the RemoteTextureOwner might not exist yet. In this case, we need to add
a block to ensure we wait for that to occur so that we do not render an erroneous result.
Previously, this block was handled in ClientWebGLContext. Since that is no longer used,
the block must be reinstated somewhere else until a non-blocking mechanism for display list
building to proceed with a stub texture host wrapper can be implemented.

Currently this leaves the gfx.canvas.remote and gfx.canvas.accelerated prefs as separate
toggles rather than trying to lump everything into one mechanism. While this may be desirable
in the future, currently Direct2D remote canvas is a separate acceleration mechanism that
needs to co-exist with the WebGL acceleration, and so being able to toggle both on or off
for testing is desirable.

Differential Revision: https://phabricator.services.mozilla.com/D194352
2023-12-18 18:10:46 +00:00
Andrew Osmond
310254c18d Bug 1869933 - Avoid allocating external image ID until ready for sharing with compositor process. r=gfx-reviewers,lsalzman
There are some error paths where we could allocate an external image ID
for a SourceSurfaceSharedData before we are able to finish sharing it.
This patch makes it so that we defer allocating the ID until the last
possible moment. This will ensure they are always increasing in order.

The patch also adds in the necessary plumbing for notifications for
waking up threads blocked on a particular external image ID for a shared
surface inside the compositor process. This is less relevant now since
it should always been in the SharedSurfacesParent map, as recordings are
only created from the main thread, but may become more important as we
add recordings to DOM workers.

Differential Revision: https://phabricator.services.mozilla.com/D196422
2023-12-14 20:08:59 +00:00
Jamie Nicol
d20809a078 Bug 1866020 - Override buggy colorspace conversion on Pixel devices. r=gw,padenot,geckoview-reviewers,owlish
Pixel 6, 7, and 8 devices running Android 14 are affected by a bug
where video frames with SMPTE 432 color primaries are rendered
incorrectly when sampled from an external texture in GLES. To work
around this, we force these frames to be converted to RGB using BT709
colorspace instead. While this won't look exactly right, it is much
better than the current situation.

When we detect that a frame is decoded with that color space on an
affected device, we set a "ForceBT709" flag which gets passed through
to webrender as a new ImageBufferKind. Rendering this ImageBufferKind
is handled via a new shader feature TEXTURE_EXTERNAL_BT709, which
works much like the existing TEXTURE_EXTERNAL feature, but
additionally uses the EXT_YUV_TARGET extension to override the
colorspace transformation.

This approach could be extended in the future to handle additional
colorspace transformations, but for now only handles the one required
to workaround this particular driver bug.

Differential Revision: https://phabricator.services.mozilla.com/D195800
2023-12-14 10:45:08 +00:00
Butkovits Atila
fcac574890 Merge autoland to mozilla-central. a=merge 2023-12-13 23:40:45 +02:00
Sebastian Hengst
4d6a5b9742 Backed out 10 changesets (bug 1829026) for causing bug 1869760 and bug 1869738. a=backout
Backed out changeset 4c619422efe5 (bug 1829026)
Backed out changeset 77da89c7dab7 (bug 1829026)
Backed out changeset 19d28d8f75a4 (bug 1829026)
Backed out changeset 674b60ba54b1 (bug 1829026)
Backed out changeset 31935f164ef0 (bug 1829026)
Backed out changeset 13c9bf69085f (bug 1829026)
Backed out changeset 330a6732fc0b (bug 1829026)
Backed out changeset 974c08a3791b (bug 1829026)
Backed out changeset 3ba040642ddc (bug 1829026)
Backed out changeset 9d9b3a68858c (bug 1829026)
2023-12-13 19:20:00 +01:00
Bob Owen
fce1e9e139 Bug 1869659: Check for Failed in CanvasTranslator::AddBuffer and SetDataSurfaceBuffer. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D196287
2023-12-13 14:33:25 +00:00
Narcis Beleuzu
4211076193 Backed out changeset 290917deea87 (bug 1866020) for wrench bustages. CLOSED TREE 2023-12-13 11:49:40 +02:00
Jamie Nicol
96a8082a23 Bug 1866020 - Override buggy colorspace conversion on Pixel devices. r=gw,padenot,geckoview-reviewers,owlish
Pixel 6, 7, and 8 devices running Android 14 are affected by a bug
where video frames with SMPTE 432 color primaries are rendered
incorrectly when sampled from an external texture in GLES. To work
around this, we force these frames to be converted to RGB using BT709
colorspace instead. While this won't look exactly right, it is much
better than the current situation.

When we detect that a frame is decoded with that color space on an
affected device, we set a "ForceBT709" flag which gets passed through
to webrender as a new ImageBufferKind. Rendering this ImageBufferKind
is handled via a new shader feature TEXTURE_EXTERNAL_BT709, which
works much like the existing TEXTURE_EXTERNAL feature, but
additionally uses the EXT_YUV_TARGET extension to override the
colorspace transformation.

This approach could be extended in the future to handle additional
colorspace transformations, but for now only handles the one required
to workaround this particular driver bug.

Differential Revision: https://phabricator.services.mozilla.com/D195800
2023-12-13 09:06:29 +00:00
Andrew Osmond
59758bd38e Bug 1869661 - Add more null checks for CanvasChild::mRecorder. r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D196233
2023-12-13 03:45:15 +00:00