2015-11-03 60 views
5

随着DirectX 12,Mantle和Vulkan等低级图形API的兴起,我想知道它们如何与异构系统架构(HSA)交互(如果有的话)?根据我的理解,支持HSA需要一些开发人员的参与,但我很好奇现在是否有任何低级图形API自己处理这个问题,或者开发人员是否仍然有责任充分利用它?DirectX 12/Mantle/Vulkan和HSA

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

由于这个问题可能特定于当前的事态,所以我对这种概述很满意(尽管关于未来路线图的信息会很好),并且我会接受仅覆盖单个图形API的答案(因为我怀疑很多人,如果有的话,人们都熟悉所有三个加HSA)。另外,如果我完全误解了它的工作方式,那么请随时指出这一点。我对这两种技术都不是很熟悉,但是想知道他们目前如何互动。

回答

7

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

enter image description here

每个操作(内存拷贝,开始工作,...)必须由应用程序明确调度。尽管应用程序可以将顺序操作分组到一个命令缓冲区中,并一次性调度整个缓冲区,并在命令异步执行时继续执行其他操作。

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

enter image description here

这新的低层API提供更多的控制,应用程序员和停止隐藏的事实真相,其实是一大卖点。

+0

很好的答案,但您认为这适用于HSA的其他功能,例如能够在CPU和iGPU之间共享相同的内存? DirectX 12等能够做同样的事情,而不必复制已经加载到主内存中的纹理(在CPU侧)? – Haravikk

+0

@Haravikk取决于硬件的布局方式,集成GPU通常没有专用内存,因此它将使用物理RAM。这可以通过CPU访问。尽管缓存意味着访问需要同步和保护。 –