Flutter will use an impeller instead of Skia
In flutter applications, Impeller will be our next-generation rendering layer
You all know that the Flutter team has been hard at work on the new graphics engine, Impeller, which is a much improved version of Flutter. The purpose of this article is to discuss those significant things and what I found out about it.
Impeller implements a custom runtime that fully exploits modern hardware-accelerated graphics APIs, replacing Skia code with a significant rewrite.
I’m not an expert at rendering, but from what I know previously, flutter was using or still is using a render engine called skia, which is pretty much the render engine from Chrome. It’s like the render engine from Chrome. The render engine is available for iOS, Android, and other platforms, except for the web.
However, this engine has this problem in which the first animation on iOS has some Jank, and that’s a really big problem. I think a lot of Flutter developers know about this issue because it’s like an ongoing discussion in which people hate people for that. Specifically, there’s this guy named TechLead who discuss this a lot, which I think is a positive thing.
Despite bringing this issue to light, the problem actually relates to the animation Jank, since the shaders must be compiled with Skia. The thing is that shaders are like small pieces of animation or low-level code that describe the graphics to be rendered. These shader files have to be compiled at runtime, which is not a pleasant thing because you do not know how long rendering will take. That’s what causes rendering to jank, and re-engineering Skia to fix it will not be able to fix the issue.
That’s why Flutter is working on this upcoming engine called impeller and if you guys go to the GitHub page for this engine actually describes a lot of things in detail but I’ll just read it here the most significant things those are that this render engine will have like all the shaders compiled before the app runs so all the pipeline State objects will be compiled like up front and they’re like so this way we can have like predictable performance you won’t have like a sudden frame drop.
I’m quoting Tim Sneath, who noted that the impeller engine can produce silky smooth animations, raising expectations significantly for multi-platform UI tools.
My understanding of silky smooth is that it is constant like the highest frame rate you can get, and I believe most of this app enables me to do that and it also indicates how the animation is supposed to feel like very natural, like the curves and physics feel very natural like how responsive it is to scrolling, how touching gestures feel, and it does feel really luxurious.
The new impeller engine will definitely improve my performance, so I’m really looking forward to it. This is an article I recommend you read.
All graphics compilation occurs during build time and not during application execution, so Impeller provides predictable performance across all devices. This decreases what is known as “jank” in apps today, when what should be smooth scrolling suddenly jumps or stutters.
Essentially, it’s a rewrite of the core rendering layer underpinning all of Flutter’s display features. Upon completion, Impeller will replace the old Skia code with custom code that can take full advantage of the latest chipsets and hardware-accelerated APIs such as Metal and Vulkan on iOS and Android.
The Impeller should be able to offer most apps on mobile a smooth, almost solid 60 Hertz refresh rate. This is overkill for most productivity apps but a necessity for games.
While Impeller is not yet feature complete and is still optimising performance, developers can test it out themselves. The system is available now for early adopters on iOS without any code changes except for enabling the flag. Impeller’s architecture and how to enable it can be found on its developer GitHub page.