DirectX 12 / Mantle / Vulkan和HSA

时间:2015-11-03 11:40:32

标签: directx-12 vulkan mantle

随着DirectX 12,Mantle和Vulkan等低级图形API的兴起,我想知道它们如何与异构系统架构(HSA)进行交互(如果有的话)?

据我了解,支持HSA需要一些开发人员的参与,但我很好奇是否有任何低级图形API自己处理这个问题,或者开发人员是否仍有责任充分利用它? / p>

HSA特别适用于系统内存和视频内存之间简化数据共享等功能,特别是当它们共享相同的物理RAM时。

由于这个问题很可能与当前的事态有关,我对这种概述很好(虽然有关未来路线图的信息会很好),我会接受一个只涵盖单个图形API的答案(因为我怀疑很多人,如果有的话,人们都熟悉所有三个加HSA)。如果我完全误解了它是如何工作的,那么也可以随意指出它;我对这两种技术都不是很熟悉,但想知道它们目前是如何相互作用的。

1 个答案:

答案 0 :(得分:7)

查看wiki page上的图表,低级API更接近他们所谓的非HSA系统。

enter image description here

每个操作(内存复制,启动作业,......)都必须由应用程序显式分派。虽然应用程序可以将顺序操作分组到命令缓冲区中,然后一次性调度整个缓冲区,并在异步执行命令时继续执行其他操作。

另一方面,传统的openGL / DirectX9通过隐藏所有调度和复制更接近HSA。然而,这会在验证中引入开销并试图预测应用程序接下来将做什么以最小化延迟。更不用说几乎没有选项来检查api是否具有同步根的操作是否完整。这意味着如果您碰巧调用需要操作结果的方法,(HSA)驱动程序将阻塞,直到该操作完成。

enter image description here

新的低级API为应用程序员提供了更多的控制权,并且不再隐藏实体,这实际上是一个主要的卖点。