Samsung's demonstration of everything the Galaxy S7 and S7 edge will be capable of — once you're able to get your hands on them — was as impressive as ever. As is often the case with this sort of thing, though, there are questions left to be answered. When it comes to performance and gaming capabilities, there's a good chance at least a couple of those questions have to do with Samsung making these phones the first with Vulkan APIs onboard.
We've seen demonstrations of what Vulkan will eventually be capable of in desktop environments, but a big question in need of answering is what Vulkan means for Galaxy S7 and S7 edge owners. Here's what we know so far, and what we can guess is going to happen next thanks to some very smart people working with Vulkan and in the gaming industry.
First things first, what is Vulkan?
Ask anyone currently working with OpenGL in gaming about the need for something better, and you'll get the same answer. Yes, now please.
While a great deal can be done with current technologies, bringing gaming experiences across platforms is a massive challenge. Even with the right people and the right resources, it is far from easy. AMD sought to fix this with a technology they called Mantle, but instead of completing the project moved on to work on DirectX 12. Mantle was instead donated to the Khronos Group as an open source effort to standardize low-level computing and rendering on multi-core CPU systems.
Basically, the goal of Vulkan is to make it easier to get better graphics performance by fully utilizing your multi-core processor. Multi-threading means Vulkan can do what OpenGL ES can't, and the end result is an overall performance boost. Because it is an open source project supported by several small groups, the first release was able to target multiple platforms simultaneously. Android is one of those platforms, and we've already seen several manufacturers immediately start working on ways to support Vulkan for developers interested in building something that relies on those APIs.
When we sat down with Sascha Willems, a developer who has been working with Vulkan for quite a while now, he pointed out another significant benefit to using Vulkan.
Porting is another area that should benefit. Though OpenGL and OpenGL ES have much in common you still need to put in lots of porting efforts, and you usually end up writing separate renderers for both of them. With Vulkan that's no longer the case. The only thing that's different is the platform specific code like getting a rendering window, but that has been very much improved over OpenGL (ES) with the WSI (windowing system integration) that's part of Vulkan. Especially with device like the NVIDIA Shield that offer desktop like GPU performance I guess we will see more Desktop games ported over to Android thanks to Vulkan. Adding Android support to my Vulkan examples for example was just a matter of minutes, and the rendering code is exactly the same across Windows, Linux and Android
So why is Samsung first to market? Basically, Samsung is going to use Vulkan to court developers to create experiences that compete directly with Apple's claim that gaming is better on the iPhone. By offering this before anyone else, Samsung is able to approach developers in the open at events like the company's upcoming developer conference and get great games that play best on the Galaxy S7 and S7 Edge.
Is Vulkan an answer to Metal?
Most of the people using Vulkan right now are happy to compare this new API to what Apple has done with their low-level performance framework, Metal. If you've ever seen the way Apple shows off Metal on stage, or used a game built with Metal on an iPhone versus that same game on another phone, you know the difference in significant. Relying on OpenGL ES for 3D gaming on a phone is a resource hog, which means your battery is drained faster for an inferior experience. Metal addresses that in a big way for Apple, and in theory Vulkan could do something similar for Android.
There's a lot more to it than that, as we learned from speaking with Giant Spacekat Head of Development Brianna Wu. As a developer familiar with Metal and Vulkan, she was able to offer a little perspective.
It's fair to call them similar, as both technologies are trying to solve the same problem. This OpenGL stack is untenable, it was written in an age with this single-core paradigm and it just doesn't work anymore. Apple rolling out Metal makes a lot of sense for them. The difference for Apple is they can look at a list of drivers, a list of GPUs, a list of displays, and they have a lot of control over the hardware. They can bring someone in to program this stuff in Assembly, and it's a tenable way forward. Vulkan is trying to solve that same problem in aggregate, but it's a much wider thing that they're trying to implement. It's a much, much harder problem to solve especially when there isn't a corporation the size of Apple leading that technology.
On Android, we've already seen examples of what Wu is talking about. NVIDIA and Samsung have obviously jumped right up and announced support for Vulkan in their own ways, but it'll be until at least the next version of Android before Google has adopted Vulkan naively in all of Android. Even when that happens, it'll only be for the newest version of Android moving forward. A quick look at recent version numbers from Google is all the explanation you need for why this will take a while to be a platform-wide experience enhancer.
Support from Google isn't the only challenge ahead. Widespread developer adoption is a significant challenge on any platform. As Wu pointed out during our interview, Apple's Metal has been out for quite a while now and the number of games supporting the framework is fairly low.
It's one of these ideas that really solves a problem, but at least on the Apple side we've got a long way to go before we've really solved this thick OpenGL stack problem. It is, frankly, killing the platform.
Samsung is hoping to address this directly, and has had some limited success with this approach with their Fingerprint APIs and multi-window app support but, just like Apple and Metal, it'll be a while before we see any significant adoption.
What about Vulkan and VR?
The other big reason Samsung is jumping on the opportunity to be the first manufacturer with Vulkan support is the Gear VR. Samsung and Oculus have done a great job elevating smartphone-based VR above the passive Google Cardboard experience, but the platform is not without performance issues. With Oculus and Samsung both acting as members of the Khronos Group, it makes sense that both companies would be encouraging developers to support this new technology in order to continue improving the Gear VR experience. In fact, according to Sascha, VR is a big part of why Vulkan is such a big deal right now.
VR heavily relies on a smooth experience with stable frame rates and no hick-ups. Vulkan offers a lot in this area, e.g. GPU timers and better synchronization along with multi threading. Stuff like micro stutter is pretty common with OpenGL (ES) and hard to fix. I think this is an area where Android will benefit the most. Vulkan is far more explicit than OpenGL ES and provides far more information about e.g. the rendering pipeline to the GPU (and driver) in advance, making it much more predictive and thus easier for the GPU. This results in far less work for driver and replaces the bulky (and hard to predict) state machine of OpenGL.
Building with Vulkan would make a massive difference in the context of the Gear VR especially, and for game developers it's a great way to do more in this fairly limited but significantly more accessible form of VR. As a game developer, Wu's support of Samsung improving the Gear VR with Vulkan couldn't be more clear.
Using the Gear VR right now runs the processor so hard that it runs my battery down in about 50 minutes, and the latency is really terrible. If there has ever been an extremely compelling case for an open standard like Vulkan to get down in Assembly and really optimize this graphical layer, this is it. We're not going to be tapping on glass forever, you've gotta ask where we're going. Building up VR and these 3D technologies is absolutely critical. If Samsung is going to be the sort of test case here, this is optimal. This is the place where that technology is desperately needed.
There's no doubt this will be the exact opposite of an overnight performance increase, but the potential for Vulkan to open doors to better experiences couldn't be more clear. With the Galaxy S7 and S7 Edge, it's a first step for Samsung towards a powerful new gaming and VR experience and a good time to stand head and shoulders above the competition and claim they were here first.