Started asserting that metal gpu contexts are shared, added ability
for IOSContexts to store their skia contexts so we can make the OpenGL
code work like the Metal code.
Fixes an indexing error in the linux key handling code.
I also found another error when checking to see if an event is re-dispatched, and some off-by-one errors in the search. Not sure what I was smoking that day, but hopefully these are all the issues.
This PR makes the Linux key handling code a little more lenient when it comes to the order in which it receives responses to key events from the framework. I had assumed that there wasn't a case where responses could get out of order, but it seems that it is possible, given that you can mash on the keyboard and eventually get one out of order.
This changes the code so that instead of just looking at the first entry in the pending event deque, it searches the deque starting at the beginning to find the event, and remove it.
This change adds a FlutterMetalRendererConfig that lets embedders
specify metal as rendering api.
Also adds a test that validates rendering a gradient using metal.
This enables delayed event delivery for macOS, so that shortcuts can handle keys that are headed for a text field and intercept them. This fixes the problem where pressing TAB (or other shortcuts) in a text field also inserts a tab character into the text field.
* [fuchsia] enable boot time shader warmup even when LEGACY_FUCHSIA_EMBEDDER is defined
* [fuchsia] decouple shader warmup from embedder api
* [fuchsia] change warmup context flush() to flushAndSubmit() to reduce memory footprint of warmup
* [fuchsia] Fix GPU resource lifecycle issue with shader warmup
This fixes an issue with the shader warmup where gpu resources could end
up deleted before the gpu work that needed them was complete, leading to
GPU page faults. This was because although the sk_sp<SkSurface> will normally
keep resources alive throughout its lifetime, the SurfaceProducerSurface will
call VkDestroyMemory on the memory backing the SkSurface when it is deleted,
even if the SkSurface wrapping that VkMemory is still alive.
This change also deletes some related but unused code from
CompositorContext that I noticed while refactoring.