簡體   English   中英

Direct3D11在哪里分配資源對象?

[英]Where Does Direct3D11 Allocate Resource Objects?

我已經閱讀了很多有關Direct3D11的文章(包括堆棧溢出!),在我的所有研究中,我都無法最終回答以下問題:

當創建資源對象(例如Buffer或Texture對象)時,例如使用pDevice-> CreateBuffer(),它將存儲在哪里? 在系統RAM還是GPU的Video-RAM上? 還是我完全誤解了資源對象的基本性質?

顯然,您用來填充資源的任何數據(例如頂點和索引數組)都存儲在您(程序員)放置在任何地方的位置,但是一旦將數據映射到Resource上后,該數據將復制到哪里? (我假設,由於必須對資源進行映射和取消映射以進行讀/寫保護,因此實際上將映射的數據復制到了VRAM中)。 此外,資源對象本身在哪里實例化?

在此先感謝您提供的所有幫助!

在創建資源期間,您的Create *調用將遍歷D3D運行時,UMD(用戶模式圖形驅動程序)和KMD(內核模式)。 KMD負責頁表管理(在共享虛擬內存的情況下,它可以與OS通訊,但是可以忽略它)。 如果您的資源不使用SVM,則將其滲入圖形內存。

用於處理器圖形的圖形內存(例如Intel Iris)是您的系統RAM。 因此,它實際上只是從應用程序虛擬地址空間到KMD的副本。

對於獨立顯卡,數據駐留在顯卡的視頻RAM中。 GPU只能處理視頻RAM中的數據。 (我不確定共享虛擬內存如何用於離散圖形)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM