Skip to main content

Vulkan on the Samsung Galaxy S7 is potentially a very big deal

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?

Game Station Galaxy S7

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?

Galaxy S7 and iPhone 6S Plus

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?

Samsung Gear 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.

Russell is a Contributing Editor at Android Central. He's a former server admin who has been using Android since the HTC G1, and quite literally wrote the book on Android tablets. You can usually find him chasing the next tech trend, much to the pain of his wallet. Find him on Facebook and Twitter

14 Comments
  • All I have to say is that, as a Linux gamer, I couldn't be more happy with the splash Vulkan is making....
    Let's leave those proprietary graphics APIs behind!
  • Happy and Linux gamer in the same sentence???????? Posted from my Nexus 6/Nexus 7 2013/Surface Pro 3
  • Well played, sir!
  • Thanks to nVidia and Valve... yes!
  • Lol at that old Nvidia spelling Posted from my Nexus 6/Nexus 7 2013/Surface Pro 3
  • Why not call it Spock Api? He's Vulcan loo Posted via the Android Central App
  • there will be duplicate of everything on samsung device. hopefully google overtake the api and not have 2 separate api
  • Pardon my total lack of knowledge, but will these API's be available to older phones such as the Galaxy S6? Or are they hardware dependent? Posted via the Android Central App
  • The G5,later this year, can be compatible with this ?
  • Yes. It will be compatible. But you need to wait until the phone update to Android 6.
  • @Oliver Collings:
    >Pardon my total lack of knowledge, but will these API's be available to older phones such as the Galaxy S6? Or are they hardware dependent? Yes.. The S6 will get it. Any GPU that supports OpenGL ES 3.1 is capable of running Vulkan. This includes any devices like the Nexus 6 which have Qualcomm Adreno 4xx GPUs and above; the S7 has a 530. Sadly of note we are losing the Nexus 5 and devices of that generation and below, etc. I'm a dev that is going to be aggressively adopting Vulkan. I've got a complex video engine I'll be rebuilding with Vulkan & Java 8 on Android N+ (previously featured on Android Central: (http://www.androidcentral.com/typhonrt-video-suite-looks-be-amazing-real...) I'll reply to points made in the post from my perspective of having used all versions of OpenGL ES on Android:
    ------------ >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. You can do multi-threading with OpenGL ES; my video engine simultaneously composes / encodes via while rendering the next frame. OpenGL ES 3.0 and higher brings exposes more fine grained multi-threading capabilities w/ GLES. I guess first and foremost it should be noted that OpenGL / ES is going to continue to be updated and that these APIs for the most part will continue to serve well into the future. Most (game) developers don't actually do any engine programming and just use off the shelf engines. For those that do GLES will remain a viable option for many applications. Check out this article & a nice "should I switch to Vulkan" flow chart:
    https://developer.nvidia.com/transitioning-opengl-vulkan
    https://pbs.twimg.com/media/CbUg4_5WEAANwhc.jpg:large What Vulkan really does is move a whole lot of logic (and complexity) from driver level up to engine / application level in control by the developer. Relieving this burden on the driver, but making engine code more complex will allow fine tuned enhancements. One will still though likely have to work around hardware limitations between vendors. It's no panacea for a reduction of complexity. This is why most (game) developers will only move to Vulkan when the off the shelf engine they use supports it (same can be said for Apple's Metal). In my case I'm creating a custom engine, so it's definitely going to be an interesting year+. From the Android perspective another huge win is that Vulkan is rendering + compute all in one API. This finally solves the schism of Renderscript and Google's lack of support for open standards (OpenCL). So we finally have a rendering+compute open standard API to use! Yeah! For my efforts I'm shooting for a video engine on Adreno 530+ class devices that can do 12 compositing layers in real time w/ full compute feature detection that is way more fine grained than anything else out there and hit 720P / 60FPS. Vulkan may just allow me to pull this off. It should be noted though that from a pure rendering perspective that GLES vs Vulkan for my use case may not exactly differ all too much regarding full screen / frame compositing. >So why is Samsung first to market? Uh, because the historically have released their next generation devices around this time of year. They had little to do with creating Vulkan for the S7 specifically since they are using a Qualcomm SoC w/ Adreno 530. All mobile GPUs coming out this year will support Vulkan and many had drivers in development for well over a year. Any other OEM who releases a Snapdragon 820+ device this year will also support Vulkan. Eventually Qualcomm will have drivers for Adreno 4xx devices; hopefully by Android N. Any marketing hyperbole of any given manufacturer being first is well just that. >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. It (the GPU) will remain a resource hog. Software always outpaces hardware. Not that Vulkan doesn't introduce new ways of balancing CPU load, but your GPU in general will still be full throttling! In my case w/ a video engine I'm also pushing the camera hard and that heats up too. From Briana Wu quote:
    >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. Apple has historically always used PowerVR / Imagination GPUs. I wouldn't be surprised if Apple doesn't outright buy Imagination in the next couple of years. From Briana Wu quote:
    >It's a much, much harder problem to solve especially when there isn't a corporation the size of Apple leading that technology. The difference is that Vulkan is an open standard. There are many large / larger corporations involved. >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. Of course you meant "natively". The likelihood of Google creating a Vulkan pipeline for their current SDKs used primarily via OS & apps is low in regard to Android N; in the next couple of years sure. Of course Android N should bring an official Android SDK binding / Java API. What NVidia and Samsung are saying is that they are exposing a Vulkan driver. That's it. It should be noted that Android N is also bringing JDK 8 / OpenJDK support which is a huge boon for performance Java / Vulkan efforts like mine. >Even when that happens, it'll only be for the newest version of Android moving forward. Yeah.. It's a *****, but such is life. The JDK 8 / Vulkan combo is enough to call it an epoch level event. As an independent with a engine in the pipeline I had to choose launch w/ GLES 3+ or focus only on Vulkan. The other benefits including compute support made it obvious, but it's going to be sparse for a bit on who'll get the new tech. At least all devices in the last ~1.5 years presently have a chance at supporting Vulkan. >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. Yes.. 99.9999% if not more of (game) developers use someone else’s engine (Unity / Unreal, etc. etc.). It should be noted though and I'm quite excited to see this is that the MoltenGL folks are releasing MetalVk for Vulkan exposed on top of Metal. https://moltengl.com/ That may make be the link for a lot of the larger engines to support cross-platform engines with one back end. Overall I'm quite excited for Vulkan. If you happen to be an Android / Java dev and interested in starting your Vulkan journey I recommend checking out LWJGL (www.lwjgl.org) as they immediately got to work on Java API bindings for Vulkan on the desktop the moment things were released last week. An interesting thread on JGO following the advancements and quick evolution of: http://www.java-gaming.org/topics/engaging-the-voyage-to-vulkan/37041/vi... I'm getting started there on the desktop and will be porting to Android w/ Android N launch. Fun times ahead! Keep the articles coming though. I'm glad to see Vulkan / open standards get a warm reception. I should be putting online in the future (after Android N) starter resources for devs that want to work with Java + Vulkan: https://github.com/typhonrt/modern-java8-android-vulkan-demos
  • Holy shit. Thank you for such a detailed response. Posted via the Android Central App
  • Excellent post, thank you! Posted via the Android Central App
  • Vulkan is a big deal for me. It's a lower-level API that takes better advantage of the CPU and GPU for the best possible experience. Being a heavy gamer, especially on the PC, it's big news for me, especially since I have yet to reap the benefits of DX12 as I haven't found a game that takes full advantage of it.