圖片:Microsoft

Microsoft 發布了新的 DirectX 12 更新,可以讓兩個處理器同時訪問 GPU 內存。該功能稱為 GPU 上傳堆,可在 Agility SDK 1.710.0。 GPU 上傳堆是另一個可用作可調整大小 BAR 的一部分的功能,通過消除在 CPU 和 GPU 之間複製數據的需要來提高性能。微軟解釋說,這項新功能解決了應用無法完全訪問獨立視頻 GPU 的幀緩衝區的問題。

來自 Microsoft:

在過去,離散 GPU 的幀緩衝區只有一小部分暴露在PCI 總線。 D3D 選擇不公開它,因為幀緩衝區的 I/O 區域通常只有 256MB,這不是很有用。一個更大的問題是它不是一個可適當虛擬化的資源。如果應用程序 A 進來並分配了所有 256MB,那麼應用程序 B 將無法分配任何空間。所以我們不能圍繞它提供任何保證,在這一點上,將它暴露給應用程序似乎是個壞主意。

但是,現在有很多 GPU 支持可調整大小的基地址寄存器(也稱為可調整大小的 BAR)。通過可調整大小的欄,Windows 將重新協商 WDDM 2.0 版及更高版本中 GPU 的 BAR 的大小。 D3D12 公開可調整大小的 BAR 的另一個很好的理由是,某些平台上的一些性能測試表明,啟用可調整大小的 BAR 後遊戲性能更好。”

GPU 上傳堆不需要用戶提供任何東西,除了在兼容機上啟用可調整大小的欄硬件以及最新的驅動程序。自發布以來,可調整大小的 BAR 已經在 AMD 和 NVIDIA 顯卡方面取得了令人矚目的進步,英特爾推薦它以實現其 Arc Alchemist 顯卡的最佳性能。由於該功能剛剛發布,開發人員需要時間在他們自己的測試後實施 DirectX 12 更新。開發人員必須遵循以下步驟才能使用 GPU 上傳堆,因為 DirectX 不會自動使用它,但它們似乎並不過分複雜。

說明

創建一個使用 D3D12_HEAP_TYPE_GPU_UPLOAD、D3D12_CPU_PAGE_PROPERTY_UNKNOWN 和 D3D12_MEMORY_POOL_UNKNOWN 的資源。 (或者D3D12_HEAP_TYPE_CUSTOM,然後使用GetCustomHeapProperties獲取頁面屬性和內存池)使用Map獲取指向資源的CPU指針,並將CPU數據上傳到資源中。可選 (Pix):使用 TrackWrite 通知 Pix 有關資源的修改。直接使用資源而不將資源複製到默認堆。

在我們的論壇上加入關於這篇文章的討論…

Categories: IT Info