2015-11-03 86 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訪問。儘管緩存意味着訪問需要同步和保護。 –