Sunday, 13 September 2015

Do you want to know what NVIDIA states about DX12?

I am writing this article just to expose my point of view about the "Asynchronous Compute" fiasco by Nvidia.

Asynchronous Compute is a feature which is exposed by DirectX 12 API.

There are a lot of websites covering up the subject (here or on reddit or google).
The "problem" surfaced thanks to the first tests of a DX12 game, "Ashes of the Singularity" by Oxide.

TL&DR
  • The game is in alpha and DX12 are not publicly available
    • So the test is valid, but let's wait for more official news
  • Tests highlight that the "Asynchronous Compute" feature is well managed by AMD cards (the workload is executed in parallel), while NVIDIA cards seem just to support the API call, but then perform the job serially (or in parallel but seriously impacted by a global lock)
    • NVIDIA mocked the support in the drivers?
  • The Asynchronous Compute feature is not a key feature of the DirectX API, nor it is required to run a game (it strongly depends on how the developers implement the game/application)
    • Indeed, it can be helpful in some usage scenarios
  • NVIDIA made no official statement (11 September 2015)
    • The silence will probably stay until more and more DX12 games will come out
    • The market will somehow risk to split the customers: those who buy "AMD friendly" and those "NVIDIA friendly" games/game engines
    • See more below...
In the meanwhile, let's take a look to the NVIDIA GTX 970 Specification page, available here.


WOW! What an incredible technical detail about DirectX 12 support!

12 API with Feature Level 12_1

There is still some missing information: the Resources Binding Tier, which for NVIDIA Kepler, Maxwell 1&2 is Tier 2.
See more details about Tier and Feature level here and here.

But... Look how the NVIDIA GTX 970 Specification page looked on the 16th of April 2015 (thanks to the WA Wayback machine).


Did you spot any difference?

To be continued...






No comments: