When profiler takes async screenshot and WebRender uses layer compositor, WebRender tries to use only one swap chain without overlay.
Differential Revision: https://phabricator.services.mozilla.com/D246200
This patch is a preliminary refactoring to make it simpler to pass additional information to the C++ side and should not affect behavior.
In a followup patch the widget glue will have special handling for frames that need to be rendered but not presented.
Differential Revision: https://phabricator.services.mozilla.com/D245564
This patch is a preliminary refactoring to make it simpler to pass additional information to the C++ side and should not affect behavior.
In a followup patch the widget glue will have special handling for frames that need to be rendered but not presented.
Differential Revision: https://phabricator.services.mozilla.com/D245564
And use DebugMarker(1) to signify that the next item is a view-transition snapshot.
This specific marker is not meant to stay forever (although the infrastructure is), but it is useful right now.
Differential Revision: https://phabricator.services.mozilla.com/D242023
And use DebugMarker(1) to signify that the next item is a view-transition snapshot.
This specific marker is not meant to stay forever (although the infrastructure is), but it is useful right now.
Differential Revision: https://phabricator.services.mozilla.com/D242023
The goal for this initial implementation is to be able to render picture snapshots without presenting the frame, but it could be extended to supporting some picture cache slices without presenting (for example if we know that the picture is not affected by scrolling or animated properties and want to start rendering it early).
Differential Revision: https://phabricator.services.mozilla.com/D234162
The goal for this initial implementation is to be able to render picture snapshots without presenting the frame, but it could be extended to supporting some picture cache slices without presenting (for example if we know that the picture is not affected by scrolling or animated properties and want to start rendering it early).
Differential Revision: https://phabricator.services.mozilla.com/D234162
For now, this only creates a single swapchain layer that WR then
composites into. Follow up patches will support constructing
multiple swapchain layers and interposing native video swapchains
between them.
Differential Revision: https://phabricator.services.mozilla.com/D230889
For now, this only creates a single swapchain layer that WR then
composites into. Follow up patches will support constructing
multiple swapchain layers and interposing native video swapchains
between them.
Differential Revision: https://phabricator.services.mozilla.com/D230889
Calling RenderThread::Pause() without using low_priority_scene_sender could reduce the waiting time for Pause/Resume handling. RenderThread::PostEvent() already exists for positing task directly to RenderThread. And RenderCompositor::IsPaused() exists for handling RenderCompositor paused state.
Differential Revision: https://phabricator.services.mozilla.com/D224306
Instead of dropping the frame's memory chunk when a frame is replaced, place the chunks into a global pool. This mostly helps when running stress tests like motionmark's html suite that cause intense allocation spikes (around 90 chunks per frame).
We should revisit whether this is needed if the cost of deallocating large regions of memory in mozjemalloc improves in the future.
Differential Revision: https://phabricator.services.mozilla.com/D223924
Some external images must be sampled from by providing normalized UV
coordinates to webrender, but currently webrender only supports
unnormalized UVs.
This patch adds a flag to webrender's external image API that
specifies whether the UV coordinates supplied when the texture is
locked are normalized or unnormalized. This flag is plumbed through
webrender to the required locations. We then add support for taking
normalized UVs as inputs to the brush_image and cs_scale shaders. The
only other shader that can be used with external textures is the
composite shader, which already supports normalized UVs.
This does not change any behaviour, that will happen in the next patch
in this series.
Differential Revision: https://phabricator.services.mozilla.com/D220581
Some external images must be sampled from by providing normalized UV
coordinates to webrender, but currently webrender only supports
unnormalized UVs.
This patch adds a flag to webrender's external image API that
specifies whether the UV coordinates supplied when the texture is
locked are normalized or unnormalized. This flag is plumbed through
webrender to the required locations. We then add support for taking
normalized UVs as inputs to the brush_image and cs_scale shaders. The
only other shader that can be used with external textures is the
composite shader, which already supports normalized UVs.
This does not change any behaviour, that will happen in the next patch
in this series.
Differential Revision: https://phabricator.services.mozilla.com/D220581
YUV422P10 is needed to properly tag decoded YUV422P10 video. NV16 is
needed to describe the macOS 10-bit YUV422 formats.
Differential Revision: https://phabricator.services.mozilla.com/D217334
Calling RemoteTextureTxnScheduler::NotifyTxn() of main thread canvas is deferred to WebRenderAPI for waiting RemoteTextureOwner at WebRenderAPI.
When RemoteTextureOwner is not registered yet, WaitingTextureOwner is used to register the callback. WaitingTextureOwner is removed in RemoteTextureMap::SuppressRemoteTextureReadyCheck() when it still exists.
Removing sync wait of off main thread canvas is going to be handled by another bug.
Differential Revision: https://phabricator.services.mozilla.com/D209647
It is better to move timeout check to end of the function, since current implementation does not call RemoteTextureMap::CheckRemoteTextureReady() if the timeout is detected.
Differential Revision: https://phabricator.services.mozilla.com/D207334
This is preparation for Bug 1868927.
By deferring ApplyAsyncImageForPipeline() for TextureHost in AsyncImagePipeline of synchronous WebRenderImageHost, ApplyAsyncImageForPipeline() can be called after the RemoteTextureHostWrapper is in the ready state.
Differential Revision: https://phabricator.services.mozilla.com/D197320
This is preparation for Bug 1868927.
By deferring ApplyAsyncImageForPipeline() for TextureHost in AsyncImagePipeline of synchronous WebRenderImageHost, ApplyAsyncImageForPipeline() can be called after the RemoteTextureHostWrapper is in the ready state.
Differential Revision: https://phabricator.services.mozilla.com/D197320