ANGLE can let you run cool games on a cheap phone. That's all you really need to know.
One of the coolest under the hood changes of Android 10 is the implementation of ANGLE, the Almost Native Graphics Layer Engine. It's one of those things that you'll never see or know is there if it's working properly, but will let your phone run games using it's native GPU hardware APIs even if it was built for a more powerful set of graphics instructions. It's complicated to wrap your head around unless you're a hardware nut.
What are the Vulkan APIs, and what do they mean for Android?
ANGLE is a Chrome project designed to do one thing — allow users on any platform to run WebGL and OpenGL ES content on its native APIs. It does this by translating OpenGL ES 2.0 and 3.0 API calls to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. These are all APIs (Application Programming Interface) that let a developer build 2D and 3D graphics into an application, but none of them are compatible with each other. Until now.
The really interesting part is what's next for ANGLE, which is where Android comes into play. The project is currently implementing translation into Vulkan and the addition of support for compute shader from ES 3.1 is coming after. The phone in your hands, regardless of model, has native Vulkan support and can run 2D and 3D games written with it using hardware acceleration. Games that require OpenGL ES of any version might also run on your phone, but if your phone's GPU doesn't natively support it you're left with software acceleration, which means slow and/or buggy graphics in most cases.
Android 10 allows developers and hardware manufacturers to decide to use ANGLE to translate GPU instructions from one API system to another. That means a game developer can decide to build in support for ANGLE into a game and a phone maker can decide to use ANGLE to translate it into instructions for the GPU used in its chipset. Since ANGLE and Vulkan support is still a work in progress, this is all opt-in for now and probably will remain that way with the full release of Android 10. But eventually, it will become "just another Android feature" and all work without any developer or manufacturer involvement.
If you are running Android 10 on your phone you can try it right now. ANGLE support is enabled for every app if you change a setting so you can see where it need some more time in the oven. You'll find the flag in the developer settings and you can choose to try it on a per-app basis. Pro-tip: don't enable it for everything at the same time unless you want your phone to get really bugged out. Trying it for an app or two isn't going to hurt anything though, and since Android 10 is only available for phones with strong hardware, you probably won't notice anything.
That's a lot to digest if you're not into this sort of thing, so let's build a potential real-world example. You decide to save a few dollars and buy a budget phone that doesn't have a strong CPU and GPU inside. It doesn't support the latest version of OpenGL ES, which is a tool that developers use to make 3D games. A really cool new game goes live on the Play Store and you install it and it runs pretty well. Everyone is happy; you because you get to play a cool new game and the developers because you installed it and like it.
ANGLE support is in its infancy in 10, but it's great seeing it there
Behind the scenes, the developer of that game decided to build support for ANGLE into the game. it just so happens that the company which made the budget phone you bought also included ANGLE support when it built Android for it. The new game was designed using OpenGL ES 3.0 APIs because it has tools that make a game look great and the developer can do it easily. Your phone doesn't support OpenGL ES 3.0, but it does support Vulkan 2.0. ANGLE translated those OpenGL API calls into Vulkan APIs that your phone's hardware understands and can render without any trouble. Voilà, fun for everyone.
To be sure, any project this big will need some time before it works the way its developers intend. ANGLE is coming with Android 10, but we'll need several versions of updates before it gets even close to perfect.
Level of OpenGL ES support via backing renderers
Direct3D 9 | Direct3D 11 | Desktop GL | GL ES | Vulkan | |
---|---|---|---|---|---|
OpenGL ES 2.0 | complete | complete | complete | complete | complete |
OpenGL ES 3.0 | complete | complete | complete | in progress | |
OpenGL ES 3.1 | in progress | complete | complete | in progress | |
OpenGL ES 3.2 | planned | planned | planned |
Platform support via backing renderers
Direct3D 9 | Direct3D 11 | Desktop GL | GL ES | Vulkan | |
---|---|---|---|---|---|
Windows | complete | complete | complete | complete | complete |
Linux | complete | complete | |||
Mac OS X | complete | ||||
Chrome OS | complete | planned | |||
Android | complete | complete | |||
Fuchsia | in progress |