Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DirectX 12/Mantle/Vulkan and HSA

With the rise of lower-level graphics APIs such as DirectX 12, Mantle and Vulkan, I'm wondering how these interact (if at all) with a Heterogeneous System Architecture (HSA)?

As I understand it, supporting HSA has required some developer involvement, but I'm curious whether any of the low-level graphics APIs now handle this themselves, or if the burden remains on the developer to fully take advantage it?

HSA is particularly interesting for features like simplified sharing of data between system memory and video memory, particularly when these are both sharing the same physical RAM.

Since this question is likely specific to the current state of affairs I'm fine with that kind of overview (though information about future roadmaps would be nice), and I'll accept an answer that only covers a single graphics API (since I doubt many, if any, people are familiar with all three plus HSA). Also if I've completely misunderstood how it works, then feel free to point that out too; I'm not super familiar with either technology, but would like to know how they currently interact all the same.

like image 453
Haravikk Avatar asked Nov 03 '15 11:11

Haravikk


People also ask

Which is better DirectX 12 or Vulkan?

According to the previous benchmark and results from the gamers, Vulkan provides a better frames rate which is almost about 5% higher than direct x 12 but direct X 12 offers a smoother experience overall it is more consistent in nature but the benchmark put it slightly behind the Vulkan.

Is Vulkan a DirectX 12?

There is no visual difference between Vulkan and DirectX 12. In Red Dead Redemption 2, there is no visual difference between selecting Vulkan or DirectX 12. The only differences between them are how they interact with your PC hardware.


1 Answers

Looking at the diagrams on the wiki page the low level APIs are closer to what they call a non-HSA system.

enter image description here

Every operation (memory copy, starting a job,...) has to be dispatched explicitly by the application. Though the application can group the sequential operations in a command buffer and dispatch the entire buffer in one go and continue with something else while the commands are being executed asynchronously.

The traditional openGL/DirectX9 on the other hand is closer to a HSA by hiding all the dispatching and copying. However this introduces overhead in verification and trying to predict what the application will do next to minimize latency. Not to mention there is very little option to check if the operations are complete with the api having synchronous roots. This means that if you happen to call a method that needs the result of an operation the (HSA) driver will block until that operation is done.

enter image description here

That the new low-level APIs give more control to the application programmer and stop hiding the nitty-gritty is in fact a major selling point.

like image 100
ratchet freak Avatar answered Sep 28 '22 08:09

ratchet freak