Download

dx12 and nVidia GPUs hardware support

Well, I believe some of you guys have already heard about this:

First dx12 benchmark that made extensive usage of Asynchronous Compute/Shaders exposed a supposed lack of “real” support of this feature on Nvidia cards. While AMD GPUs are getting great performance improvements with this feature, NVIDIA’s cards are actually getting worse performance in comparison to dx11… NVIDIA claims to support it on its GPUs (and gave some vague excuses for that performance issue on that specific benchmark)… But as some people noticed, asynchronous shaders are certainly being “emulated” via software (nvidia drivers) and it may lead to overhead when abused…

That’s kinda serious problem I think… I made a huge investment last month when I bought a 980Ti (witch says “full dx12 support” on the box btw :p) to make my rig future proof in terms of GPU (at least for the next 3 years). I believe that a new API won’t be at its fully potential and adoption for the next couple of years. But Windows 10 is spreading fast and dx12 stuff is already being implemented… Asynchronous Shaders is a very important feature available on the consoles (and it will be extensively explored for sure as it helps to squeeze more juice from that hardware). So in a world where the multi platform games are ruling, I tend to believe that dx12 adoption will be faster than I’ve expected…

I’d like to have an idea though about the realistic usage of Asynchronous Shaders on a real world scenario… Will it really be a performance savior(amd)/killer(nvidia):p?
What do you guys think about this?

Ps: I’ve tried dx12 on UE4 for one of my projects and… got a frame drop from 110 to 80 :frowning: (I hope that’s due to the experimental nature of this feature on its current state :smiley: )

If there’s a problem with DX12 and Nvidia cards, then it seems like it’s a simple driver solution. Nvidia cards are already generally faster than AMD, so it’s not a big issue until there’s a lot of games that use DX12

About this topic, I really hope that you guys at epic doesn’t/won’t cripple or delay UE for DX12 (disable/cripple async shaders etc) in order to make nvidia hardware look good compared to amd, on behalf of nvidia. Concerned from reading about nvidia (marketing?) pressuring developer to disable some DX12 features on maxwell architecture.

Link OP provided http://www.guru3d.com/news-story/nvidia-wanted-oxide-dev-dx12-benchmark-to-disable-certain-settings.html

(You can continue reading the statement from Oxide in the link if you are interested)

Externally it looks like epic is working closely with nvidia with gameworks, “meant to be played” and new geforce product announcements like in GDC, which is all fine, totally cool.
My point is I hope that internally at epic you guys puts “platform and vendor agnostic” as first priority and makes the best use of every one of these platforms and, regarding this current topic, fully utilize every gpu architecture and API without disabling features; because some vendors doesn’t like it for reasons like their competitors makes better use of it or they lack those features them selves.

I do believe you guys are awesome with all you have done with UE4 and I hope that you will continue to be awesome in many years to come.

//
For those that are interested in the technical details you can read the posts from Mahigan at hardforum, this guy has been researching this for a week. Looks like his work is making sense out of this and explains in great details about maxwell and GCN architectures.

Well, at least it looks like they (Epic) are already implementing it (AsyncCompute) and intend to make it a cross platform feature:

https://docs.unrealengine.com/latest/INT/Programming/Rendering/ShaderDevelopment/AsyncCompute/index.html

“As more more APIs expose the hardware feature we would like make the system more cross platform. Features that make use use AsyncCompute you always be able to run without (console variable / define) to run on other platforms and easier debugging and profiling. AsyncCompute should be used with caution as it can cause more unpredicatble performance and requires more coding effort for synchromization.”