語法
常數
備註
應用程式會在資源描述中識別資源的預期使用方式 (其用途)。有數個用於建立資源的結構,包括 XG_TEXTURE1D_DESC、XG_TEXTURE2D_DESC、XG_TEXTURE3D_DESC 和 XG_BUFFER_DESC。 應用程式不會指定要在其中建立資源的記憶體類型 (集區)。相反地,您會指定資源的預期用途,並讓執行階段 (與驅動程式和記憶體管理員協同) 選擇能達到最佳效能的記憶體類型。資源用途限制
每種用途都決定了 CPU 和/或 GPU 存取性之間的取捨。一般而言,其中一個處理器的存取效能較高,代表另一個處理器的存取效能較低。兩個極端分別是 XG_USAGE_DEFAULT 和 XG_USAGE_STAGING 用途。XG_USAGE_DEFAULT 幾乎將存取完全限制在 GPU。XG_USAGE_STAGING 幾乎將存取完全限制在 CPU,且只允許在 GPU 與 CPU 之間進行資源的資料傳輸 (複製)。 XG_USAGE_DYNAMIC 用途是一種特殊情況,當 CPU 即時產生資料並高頻率傳送時,可最佳化從 CPU 到 GPU 的資料流。XG_USAGE_DYNAMIC 通常用於含有頂點資料的資源和常數緩衝區。 XG_USAGE_IMMUTABLE 用途是另一種特殊情況,會讓 GPU 只在您建立資源時產生一次資料。XG_USAGE_IMMUTABLE 非常適合紋理之類的資料,因為這類資料通常是從某種檔案格式讀入記憶體。因此,當您使用 XG_USAGE_IMMUTABLE 建立紋理時,GPU 會將該紋理直接讀入記憶體。 使用下表選擇最能描述 CPU 和 GPU 如何存取資源的用途。其中存在效能取捨。
1:具有 XG_USAGE_STAGING 用途之資源的 GPU 讀取和寫入僅限於複製作業。此外,由於深度樣板格式和多重取樣配置是特定 GPU 設計的實作細節,一般而言,作業系統無法向 CPU 公開這些格式和配置。因此,暫存資源不能是深度樣板緩衝區或多重取樣轉譯目標。
由於 XG_USAGE_DYNAMIC 資源會耗用特定的硬體功能,請謹慎使用。顯示驅動程式通常會使用有利於 CPU 寫入但會妨礙 CPU 讀取的快取演算法,為 XG_USAGE_DYNAMIC 資源配置記憶體。因此,請勿期望從 XG_USAGE_DYNAMIC 資源進行 CPU 讀取時能有高效能,甚至一致的效能。
資源繫結選項
為了將效能最大化,並非所有資源用途選項都能作為管線的輸入或輸出資源。下表列出這些限制。- 2:如果使用不同的檢視繫結為輸入和輸出,每個檢視都必須使用不同的子資源。
- 3:資源只能以單一子資源建立,不能是紋理陣列,也不能是 mipmap 鏈。
