Don't want to see articles from a certain category? When logged in, go to your User Settings and adjust your feed in the Content Preferences section where you can block tags!
We do often include affiliate links to earn us some pennies. See more here.
The Khronos Group have announced a '3D Portability Initiative' to enable 3D applications that are portable across Vulkan, DX12 and Metal.

If this picks up some proper traction, it could be a really great solution for future Linux ports for developers to have to worry a little less about the graphics API involved.

From their page on it:
QuoteOne possible path forward to help resolve this dilemma is to define a portability solution that enables rendering code to be written and run, at close to full efficiency, over Vulkan®, DX12 and Metal-based systems. Such a solution would need to address differences between both rendering APIs and shading languages.

So at this stage, they don't have anything ready to show as it sounds like very early draft work on the design of the API itself. It does bring another problem though, which is the 'yet another API' issue. Sure, it sound fantastic, in theory. It could end up with its own set of issues, that's if it ever actually takes off.

What do you think to this?

Thanks for the email hidekin! Article taken from GamingOnLinux.com.
Tags: Vulkan
10 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly checked on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
The comments on this article are closed.
23 comments
Page: «2/3»
  Go to:

sarmad Mar 2, 2017
I don't like the idea. First, we'll have an extra layer that is only needed for political reasons, not technical reasons. Second, Microsoft and Apple will still try their best to undermine this new initiate just as they are trying to undermine Vulkan so we'll still eventually end up in the same situation. The solution to this mess is in the hands of game studios; if they don't want to target multiple APIs then they can simply target Vulkan and that will allow them to run their code on all platforms (MacOS and iOS can run Vulkan using MoltenVK).
Guest Mar 3, 2017
If I understand that Khronos site correctly (no guarantees for that), they suggest to work out the common functionality of all three Next-Gen APIs (DX12, Metal and Vulkan), and then use an Abstraction-API plus Spir-V (Standard Portable Intermediate Representation, Vulkan) as an intermediate Language, with open source tools to convert back and forth, from and to any of the three APIs plus one extra target (WebGL-Next), which itself uses JavaScript and WebAssembly on top of a Web-Browser using the native API of the system it runs on.

IF that is really possible I'd see several consequences:

1. Almost automatic portability between APIs, except for certain features outside common functionality.
2. With Vulkan existing on Windows, the only real argument for developers to support DX12 is XBox Support, because XBox is too big a platform to be left out, but has no Vulkan support. With a working 3D Portability Solution developers could use Vulkan or the 3D-PS Language and easily port to DX12 just for XBox.
3. No problem to support Mac. Very few developers would use Metal directly. Most apps would just get converted to Metal.
4. In the long run I'd see a unification of APIs, in the form of 3D-PS (almost Vulkan), which is exactly what I would love to see, because its open, and because its exactly what those well-named lock-in jerks try to prevent from happening.

Then there ist this WebGL-Next thing, which would be built based on the 3D Portability Solution. To be honest: I don't know what WebGL is used for today, so I tend to ignore it.

If this all won't work out, I'd say: Shader language converters are useful!
STiAT Mar 3, 2017
Quoting: ShmerlIt's bad, because instead of pushing for real cross platform solution, it encourages lock-in jerks to keep using lock-in.

It's like instead of insisting to use HTML, someone would come up with truncated abstraction, above Flash, ActiveX and HTML proper.

The issue is, that Vulkan is no real cross platform solution. You don't have it on Mac to my knowledge. You don't have it on iOS. You don't have it on XBox. You don't have it on PS4.

They have cross platform capabilities. Without the vendors distributing it... ye, it's not as cross platform as developers may want it to be. An in-code wrapper for your own product is what you may will want for that. It creates traction too for the performance loss and/or issues with the ports. If they open up the solution, and game (engine) developers using it, it can become a really great solution.

Sadly, the ideal world is far from reality. Best we can get out of this is ... all others see the issues we see now. Though, I expect ports from DX12/Vulkan/GNM to be much more straight forward than DX9/10/11 to OpenGL.


Last edited by STiAT on 3 March 2017 at 12:44 am UTC
Guest Mar 3, 2017
Quoting: sarmadI don't like the idea. First, we'll have an extra layer that is only needed for political reasons, not technical reasons. Second, Microsoft and Apple will still try their best to undermine this new initiate just as they are trying to undermine Vulkan so we'll still eventually end up in the same situation. The solution to this mess is in the hands of game studios; if they don't want to target multiple APIs then they can simply target Vulkan and that will allow them to run their code on all platforms (MacOS and iOS can run Vulkan using MoltenVK).

Not on XBox!
Guest Mar 3, 2017
Quoting: STiAT
Quoting: ShmerlIt's bad, because instead of pushing for real cross platform solution, it encourages lock-in jerks to keep using lock-in.

It's like instead of insisting to use HTML, someone would come up with truncated abstraction, above Flash, ActiveX and HTML proper.

The issue is, that Vulkan is no real cross platform solution. You don't have it on Mac to my knowledge. You don't have it on iOS. You don't have it on XBox. You don't have it on PS4.

They have cross platform capabilities. Without the vendors distributing it... ye, it's not as cross platform as developers may want it to be.

Sadly, the ideal world is far from reality.

Oh yes, technically it is cross platform, but then there is reality, as you say.. What keeps Vulkan from beeing true cross platform is Microsoft, Apple and Sony.

But on the Khronos page they say:
"Due to industry demand, Khronos is initiating the development of a solution to enable 3D applications that are portable across Vulkan, DX12 and Metal."

So it seems the whole 3D portability-thing is on the table because the industry wants to get past Microsofts and Apples behaviour. Sony operates in another sphere..


Last edited by on 3 March 2017 at 1:39 am UTC
STiAT Mar 3, 2017
Quoting: webcreatureSo it seems the whole 3D portability-thing is on the table because the industry want's to get past Microsofts and Apples behaviour. Sony operates in another sphere..

Fair point, accepted. And I guess this is the only reason, because the game developers are sick of lock-ins and porting engines - game developers mostly are content creators, not engine developers. And Vulkan/Metal/DX12 are finally similar enough to do such porting layers with enough performance.


Last edited by STiAT on 3 March 2017 at 1:00 am UTC
ShabbyX Mar 3, 2017
I highly doubt they would create yet another API. After all, they just decided Vulkan is the best they could come up with.

The best thing they can do is to implement these:

- Tools to convert from any shading language to SPIR-V
- Translation layer from Vulkan to other APIs, such as dx, metal, sce (playstation).

In other words, you would end up coding in Vulkan as the universal API, and use the translation layer when not possible, for example on OSX, PS and XBox.
Guppy Mar 3, 2017
Quoting: Guest[...]
They use the exclusive standards.

Why?

I have no fucking idea.

[...]

Because it's the safe logical progression DX12 might be 99% different to DX11, but being used to DX they will take that 1% familiarity over something the is 100% unknown.
Shmerl Mar 3, 2017
Quoting: ShabbyXIn other words, you would end up coding in Vulkan as the universal API, and use the translation layer when not possible, for example on OSX, PS and XBox.

Yes, that's actually a good direction for now. And unlike MoltenVK that translation layer should be open.
etonbears Mar 4, 2017
Quoting: Guppy
Quoting: Guest[...]
They use the exclusive standards.

Why?

I have no fucking idea.

[...]

Because it's the safe logical progression DX12 might be 99% different to DX11, but being used to DX they will take that 1% familiarity over something the is 100% unknown.

From the viewpoint of a D3D developer, it's actually a lot better than that; Microsoft have a "merged" D3D11/D3D12 mode that gets you many of the benefits of D3D12 API while keeping most of the D3D11 calls the same. There is really no reason to change to Vulkan unless a developer wants to target additional platforms.

The reasoning behind this announcement/initiative is probably a pragmatic acknowledgement that the world will not become Vulkan overnight, and possibly not at all. For a general cross-platform application that wants to have some 3D capability, and for WebGL client implementations, having such a compatibility layer may help ( they are inviting input, so we don't know how such a layer would work ).

For games and other performance-sensitive applications, maybe it is not such a good idea, as there would probably not be as much opportunity to optimize with either a source-level code generator or binary-level translator.



As something of an aside, there seems to be an assumption by many people that adoption of Vulkan by developers is both an obvious step and a trivial task. For some developers one or both of these are true, but for many they are not.

What if you have a game or other application written in C++/COM on Windows, with all the appropriate development and content tools a practices? Are you going to adopt a new C API and development model for a few percent extra sales, or use the safe option of an updated familiar friend?

Vulkan is the "natural" 3D API for Android/Linux ARM devices and GNU/Linux x86 devices ( as well as potentially other Linux, BSD and SysV derivatives ), so anyone that has an interest in targeting these platforms, such as game engine developers, have been quick to adopt Vulkan. But I think it is the support in Android that is the more important driver for adoption than any support in Windows.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.