The skia_conversions sources and namespace have been filled with methods
that are no longer used now that the DisplayList has its own complete
set of APIs and is now mostly obsolete.
There are different ways to iterate over an SkPath or an impeller::Path
and various points in the engine source tree we have boilerplate
duplicates of this code to transfer the contents of the DlPath wrapper
object into some platform-specific path. This PR adds a
dispatch/receiver mechanism to read back the contents of a DlPath -
independent of whether it is backed by an SkPath or an impeller::Path -
in a simpler form that avoids potential mistakes in the various
conversion methods.
See DlPathReceiver and DlPath::Dispatch in the dl_path.h file
When we return to the foreground the swapchain is reconstructed anyway.
Eagerly tearing the old one down releases memory faster. Highlighted by
a regression in a customer: money benchmark.
Fixes https://github.com/flutter/flutter/issues/161283
When generating mipmaps, as soon as we hit a dimension (x,y) of 1, stop
generating mipmaps. This is done by changing the mip computation to use
min instead of max - but also adds a short circuit too.
## Description
This PR fixes a crash on Android related to specific keyboard events.
It is very similar to http://github.com/flutter/engine/issues/35924
which was related to down events. This PR fixes the similar logic
related to repeat events.
## Related Issue
Fixes [Flutter 3.29 Fatal crash with
java.lang.AssertionError](https://github.com/flutter/flutter/issues/164626)
## Tests
Adds 1 test.
Most of the reported Mediatek issues are API 29/30, maybe up to 31. By
34 it should work, and the mokey device we have works fine with Vulkan
and runs on CI. This is necessary to allow MediaTek devices to use HCPP
without us having to write a new rendering surface abstraction for GL.
This does _not_ enable PowerVR, which is still denylisted in the vulkan
backend.
Currently we reset the entire descriptor pool(s) each frame.
We can actually reuse the allocated descriptor sets, as that is safe to
do as soon as the cmd buffer that references them has been submitted
(AFAIK). This provides a minor speed up for a large amount of small
drawing ops, but not much beyond that.
Using MSAA w/ depth stencil requires extra work on the GPU to track
multiple samples and clear the depth/stencil textures.
See also:
https://docs.qualcomm.com/bundle/publicresource/topics/80-78185-2/best_practices.html
Its unclear _how_ much this matters, but adreno recommends minimizing
bin count and as such minimizing msaa samples. Well, we can fully
minimize it by not enabling it. Removing depth stencil was also
considered in the past, this should be removed as it requires us to
clear, which isn't free.
Its likely this won't have a huge performance impact, but seems like a
good best practice.
Fixes https://github.com/flutter/flutter/issues/163421
If we restore to the onscreen but need to generate mips (because its a
toImage call) then we could miss the mip map generation. This will
primarily happen on Android emulators as they do not support framebuffer
fetch.