Jump to content
  • Advertisement
Sign in to follow this  
mike44

DX12 to Vulkan

This topic is 607 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi

It seems Feral brings some Vulkan games. Hence I wonder if that would be kind of easy to port, for ex. Rise of Tomb Raider or any game which is DX12 to Vulkan?

I guess easier than from OpenGL? I always hear that it should be so easy. In other words will it make sense to support Linux/Vulkan for existing DX12 titles even as for today's market shares?

Thanks for feeedback from people who know about this in detail.

Regards

 

Share this post


Link to post
Share on other sites
Advertisement

Porting a large game like Tomb Raider to another platform and rendering API would never be easy. The question is whether it is profitable to do the port or not. If it is profitable then a large studio could spare the resources.

Edited by vanka78bg

Share this post


Link to post
Share on other sites

I wonder if that would be kind of easy to port, for ex. Rise of Tomb Raider or any game which is DX12 to Vulkan?
I guess easier than from OpenGL?

Yes, porting from D3D12 to Vulkan is a similar amount of work to porting from D3D11 to GL.
So porting a Windows game to linux is about as complicated as it's always been.

Porting from D3D11 to 12, or GL to Vulkan is significantly more work though.

Porting a large game like Tomb Raider to another platform and rendering API would never be easy. The question is whether it is profitable to do the port or not. If it is profitable then a large studio could spare the resources.

I've ported games to new rendering APIs as a freelance contractor before. It's fairly straightforward assuming that their engine is designed sanely (i.e. gameplay code is abstracted from platform-specific code). I would generally quote around $20k for such a job, which would be paid off by maybe 1000 extra sales. Of course there's a lot more work to a port than just redoing the renderer, so call it 10k sales to be safe :lol:

And yeah, none of the big commercial games that I've worked on have ever done Linux or Mac releases, I guess because the publisher doesn't believe that the extra development cost will be worth the extra sales. Even if it barely breaks even, thats a 1:1 ROI to them, which looks bad to their shareholders.
Even convincing them to pay for a Windows release instead of PS/Xbox only is hard enough sometimes!

Share this post


Link to post
Share on other sites

Maybe a little bit offtopic, but given you either have the needed knowledge in both APIs, or the engine you work with has build targets for both with no limitations (like some effects only working in DX or stuff like that), is there any reason to pick DX12 over Vulkan now, besides the XBOX One?

 

Vulkan is compatible with Win7 and Linux, maybe MacOS at some point, so I guess porting to these platforms will be way easier because the renderer should work without modifications at least.

 

 

Just curious (and also interested if I should fully concentrate on Vulkan down the line).

Share this post


Link to post
Share on other sites

is there any reason to pick DX12 over Vulkan now, besides the XBOX One?

HLSL support is still at a WIP stage.
The shading languages for each platform are basically:
Windows + Playstation + Xbox + Nintendo: HLSL (or GLSL on Windows) (don't listen to the numpties that say that any consoles use GL...)
Linux + Android + Web: GLSL
Apple: MSL (or GLSL)
So if you're a console developer, your shader codebase will be in HLSL, and right now the best workflow in vulkan is likely HLSL->GLSL->SPIR-V, which sucks. Hopefully soon there'll be some robust HLSL->SPIR-V direct compilation workflows though.
 
D3D12 had about a year head start over Vulkan, which is likely reflected in driver stability, dev tools, debuggers, etc... plus Microsoft is better at this game than Khronos is :lol:
 
D3D12 is actually a little bit higher level than Vulkan, which is a pro in that it's easier to work with, and a con that it's not quite as to the metal.
 
And yeah, D3D12 is unfortunately tied to Win10 while Vulkan isn't. On the plus side, this lets D3D12 make a few extra simplifying assumptions that Vulkan can't make... However, this doesn't go all the way, as Microsoft decided to support Windows Phone hardware, so D3D12 still contains a bunch of optional features in order to support mobile GPU architectures...
 
I haven't actually done a Vulkan port yet though! My plan is to do D3D12 first, as it's an easier API, and then port that to Vulkan :D
I was in the Mantle beta and really liked the API though, and Vulkan is pretty much just Mantle rebranded, so I look forward to that port.

Share this post


Link to post
Share on other sites

D3D12 had about a year head start over Vulkan, which is likely reflected in driver stability, dev tools, debuggers, etc... plus Microsoft is better at this game than Khronos is

 

This is still very true sadly enough. The first year of D3D12 was extremely rough in terms of driver and tool availability/stability. Vulkan seems to be going through this right now.

That said, the only way for an API like this to reach maturity is for more devs to use it, back it and give feedback!

 

right now the best workflow in vulkan is likely HLSL->GLSL->SPIR-V, which sucks.
 

I had a chance to have a chat with some of the people in charge of Khronos' SPIR-V compiler efforts not too long ago. It seems like native HLSL support in glslang is a pretty high priority to them, so I hope that this will become a viable workflow very soon. They also seemed pretty excited about Microsoft's efforts to push out their new HLSL compiler infrastructure out into the open. This only means good things for them as well :)

Share this post


Link to post
Share on other sites
Having read up on both in the form of a couple of books I personally feel, from an API point of view, it's pretty much a toss up as to which one you want to go for.

I wouldn't worry about Win7/Win8 support of Vulkan personally; it's unlikely to be a deciding factor by the time someone starting now has something out. Linux might be a consideration but most people who have a Linux version of their game report sales numbers of about "fuck all" which largely seems to match the market as reported by Steam. Apple won't be touching Vulkan, they are knee deep in Metal (which, by what people have said, is a sane API on it's own - somewhere between D3D11 and D3D12 in terms of 'level').

Once you factor that out it comes down to what you want to support and what features you like/need - both are broadly speaking the same with a few differences.
For example I like that Vulkan lets you enumerate all the queues on a device (so for my 290X it reports 1 gfx, 5 compute and 2 DMA) where as D3D12 virtualises it all.
However when it comes to D3D12 I do like the indirect draw call type where you can also change buffers/constants along with the draw counts which means you could keep more things on the GPU for self-feeding. NV has a more comprehensive version as an extension but Vulkan lacks that by default.

Vulkan seems a bit more verbose than D3D12, but eh, minor point imo once you get beyond anything simple.

So, I'd pick one and run with it - both teach you to deal with the GPU in largely the same manner so you won't be missing out.

Share this post


Link to post
Share on other sites
I would generally quote around $20k for such a job, which would be paid off by maybe 1000 extra sales. Of course there's a lot more work to a port than just redoing the renderer, so call it 10k sales to be safe :lol:

 

That should be ok given that steam has more than 125 millions users.

 

Vulkan should mature fast enough given that Valve, Google, Feral etc. contribute to. Apart Feral games I'm also interested in the 3 upcoming Vulkan/VR titles from Valve.

 

PS: By the way, I ran into a 16 shader limit (GLSL430) with Unreal on Ubuntu. Will that go away with Vulkan?

Edited by mike44

Share this post


Link to post
Share on other sites

I would generally quote around $20k for such a job, which would be paid off by maybe 1000 extra sales. Of course there's a lot more work to a port than just redoing the renderer, so call it 10k sales to be safe :lol:

 
That should be ok given that steam has more than 125 millions users.

The size of steam's user base is not the size of your market. The iPhone has 100 million users, but most apps on the app store make $0, because they don't pay for any marketing.

 

Most games on steam sell far less than 100k copies, and Linux accounts for 0.8% of users, so on average you should expect far less than 800 linux sales...

If a game retails for $50 on steam, then the publisher gets $35, so 800 sales turns into $28k, which will pay for two or three man-months of engine porting work -- and that's an above average expectation. You're just as likely to sell 10k copies total, which equates to 80 on linux, which gives you a porting budget of $2800, or about one man-week of engine porting work.

 

Like I said, most of the games that I've worked on, the publisher hasn't even really wanted to do a Windows version, let alone a Linux version, because an average sales result of 10k copies total gives you a pretty low budget for a game. Many publishers also believe that releasing a PC version doesn't get many extra sales total, but only cannibalizes the console sales (e.g. you sell 10k units on PC, but sell 8k less on console)... ;(

Of course in the tiny indie / garage gamedev / basement coder scene, where everyone is low-budget, the math might work out in your favor. Or maybe you develop on Linux out of personal choice and have to port to Windows :wink:

Share this post


Link to post
Share on other sites

Windows + Playstation + Xbox + Nintendo: HLSL (or GLSL on Windows) (don't listen to the numpties that say that any consoles use GL...)

While quickly googling for running Unreal with glsl450 instead of 430, I've stumbled over this:

http://nintendoeverything.com/switch-supports-vulkan-and-opengl-4-5/

Developing on openstandards compliant Ubuntu saved me a lot of c++ dev. time until now, but of course it depends on what you work. Unreal looks like I need to develop on Windows for a while, until it catches up and supports also Vulkan on Linux.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!