Skip to main content
GameDev.net gamedev.net
🔒 Locked

Is it worth supporting DirectX11 Anymore?

Started by SephireX Feb 2, 2019 at 11:31 AM 13 replies 8.4k views
Original Post
SephireX
SephireX

If building a 3D graphics engine in 2019 with the hope of creating a game for PC, would it be worth supporting the DirectX 11 graphics API?

Vulkan would seem like the best API to support first and all NVidia GPUs from Kepler onward support Vulkan but does it perform well enough on Kepler/Pascal GPUs relative to DirectX 11?

JoeJ
JoeJ

AFAIK there are no plans to discontinue DX11 in favor of DX12. Likely both APIs will remain, but can somebody confirm this?


I've used Vulkan with GTX 670, and it performed as expected. I think there is no support for GTX4xx, not sure about 5xx. AMD 5870 performed great.

But i'm mainly about compute performance, i just noted nothing special with the very basic rendering i have.


But i'm pretty sure low level can at least match high level if you do it right. I would make the decision as following:

Want Raytracing? -> DX12 / VK

Be a AAA dev? -> save time and choose DX11, because it's less work and NV will optimize the driver for your game. ;)

Neither of the above? Want things like async compute and proper multithreading -> DX12/VK. No need for this, then go the easy way and use DX11.



_Silence_
_Silence_

My two cents will be to tell you that if you understand very well all the subtilities of today's GPU and graphics programming, it might be interesting for you to use a low-level API like Vulkan or DirectX 12. If you ever met any bottleneck with high-level APIs that you know you cannot overcome them easily, then again move to them.

But if you never met any performance issues with OpenGL or DirectX 11 and / or you don't want to manage all the internal, then you'll still be able to have very good performances with normal APIS like OpenGL and DirectX 11.

If you are alone, then you might start with a higher-level API or maybe you could use an existing graphics abstraction library which will get you free from doing it all from scratch.

Brain
Brain

DirectX 12 and 11 are entirely different beasts.

Think of them like being like comparing assembler and C++, they have different problem domains they solve.

For anything other than an AAA engine, or the learning experience, really you should be considering dx11, not dx12.

Hope this helps!

fleabay
fleabay

DX11 or OpenGL should be the primary API you support unless you want or need to do otherwise. Is your game so graphically intensive that you require DX12 or Vulkan?

🙂🙂🙂🙂🙂<←The tone posse, ready for action.
SephireX
SephireX

Apologies I didn't phrase my question well. I'm very familiar with DirectX 11. First learned to use it in 2012. I intend using Vulkan but just want to know from a customer standpoint, is DirectX 11 worth supporting anymore? I'd like the renderer to fully utilize Vulkan and other low level APIs and I'd rather not have to deal with a higher level API if possible.

fleabay
fleabay

If your game attracts any significant amount of casual players that might have older video cards then I think it would be a good idea.

🙂🙂🙂🙂🙂<←The tone posse, ready for action.
0r0d
0r0d

I would support either OpenGL or DX11 first, not Vulkan. Only later after you have your renderer working, if you have a need for something like DX12 or Vulkan, then go for it at that point. But for most games you wont need to go there, and working with GL or DX11 will be much more time efficient for you.

MJP
MJP
On 2/2/2019 at 4:56 AM, JoeJ said:

Oh, looking at this: https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam, you could target 90% with VK.

Would be enough for me.

Do their HW stats actually tell you the number of systems with a working Vulkan driver? My understanding is that you can't just take the number of Win7 + Win10 systems and assume they're all Vulkan-capable, since there's Win7 machines out there with older GPU's (mobile GPU's in particular) that never got a Vulkan driver (or the owner just never updated their driver for whatever reason). That case might not be common for the Steam userbase since they tend to have more power users, but I know it's absolutely a consideration for games and engines that target casual users.

JoeJ
JoeJ
1 minute ago, MJP said:

since there's Win7 machines out there with older GPU's

There is a link in the image 'DX10/11/12-SYSTEMS'. Clicking this there are many details: https://store.steampowered.com/hwsurvey/directx/

So OS and GPU percentage for each. Lots of numbers, but of course i don't know how accurate they really are.

pcmaster
pcmaster

It really depends on your target audience. The audience might correlate with some game genres.

A) Hardcore gamers? They will have Windows 10 + DX12 GPUs + up-to-date drivers => Vulkan/DirectX12

B) Casual gamers? They might still have Windows 7 + DX11 => DirectX11

C) Support everyone? => DirectX11

If you're trying to have a multi-platform engine, you'll want to support DirectX11. If not and your product targets non-hardcore gamers, you'll still want to support DirectX11.

Also, it's always easier to "retrofit" a DirectX11 backend into a Vulkan-styled rendering engine, than vice-versa, but you surely know this.

Alessio1989
Alessio1989

It is worth if you do not need or want to deal with manual synchronizations and memory management of D3D12/Vulkan. Also, when you are using Direct2D you are implicating using Direct3D 11. Direct3D 11 Video extension is also used in a lot of video multimedia back-ends (although there is a D3D12 Video extension too now). You will probably deal with DirectX 11 graphics APIs anyway, even if you do not want to use is as backend in you main rendering system.

atri
atri
On 2/4/2019 at 8:07 PM, pcmaster said:

A) Hardcore gamers? They will have Windows 10 + DX12 GPUs + up-to-date drivers => Vulkan/DirectX12 

most of "hardcore gamers" play on minimal setting to have 120+fps, that means "OGL2.0/DX8 graphic level"

in that situation, OpenGL4/DX11 overhead ~5-10% (with overall GPU load less then 50%(in most of AAA games on min settings on 1080+GPU))... does not rly matter

I agree to posts above.

if you need simple "print texture(shaders) on polygons"...then OGL4/DX11 more then enought (even game engine like Unity and Godot "roll back" to OGL3 for WebGL compatibility)


Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.