語法
typedef enum D3D12_RESOURCE_FLAGS
{
D3D12_RESOURCE_FLAG_NONE = 0,
D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
D3D12XBOX_RESOURCE_FLAG_PREFER_INDEX_BUFFER = 0x10000,
D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER = 0x20000,
D3D12XBOX_RESOURCE_FLAG_PREFER_INDIRECT_BUFFER = D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER,
D3D12XBOX_RESOURCE_FLAG_PREFER_PREDICATION_BUFFER = 0x40000,
D3D12XBOX_RESOURCE_FLAG_PREFER_STREAM_OUTPUT = 0x80000,
D3D12XBOX_RESOURCE_FLAG_DENY_COMPRESSION_DATA = 0x300000,
D3D12XBOX_RESOURCE_FLAG_DENY_COLOR_COMPRESSION_DATA = 0x100000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA = 0x100000,
D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA = 0x200000,
D3D12XBOX_RESOURCE_FLAG_ALLOW_DCC = 0x400000,
D3D12XBOX_RESOURCE_FLAG_FORCE_TEXTURE_COMPATIBILITY = 0x00800000,
D3D12XBOX_RESOURCE_FLAG_FORCE_DCC_TEXTURE_COMPATIBILITY = 0x00000100,
D3D12XBOX_RESOURCE_FLAG_FORCE_HTILE_TEXTURE_COMPATIBILITY = 0x00000100,
D3D12XBOX_RESOURCE_FLAG_FORCE_FMASK_TEXTURE_COMPATIBILITY = 0x00000200,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR = 0x1000000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_PLANES = 0x2000000,
D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_SMEM = 0x4000000,
D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP = 0x40000000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_STENCIL_HTILE = 0x80000000,
D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_EXPCLEAR = D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR,
} D3D12_RESOURCE_FLAGS
常數
| 常數 | 描述 |
|---|---|
| D3D12_RESOURCE_FLAG_NONE | 未指定任何選項。 |
| D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET | 允許為資源建立轉譯目標檢視,並讓資源能轉換為 D3D12_RESOURCE_STATE_RENDER_TARGET 狀態。為了在一般轉譯期間降低有效頻寬,某些介面卡架構會為具有此旗標的紋理配置額外記憶體。 此特性對於從未轉譯的紋理可能沒有益處,也不適用於以 BC 格式壓縮的紋理。 若永遠不會進行轉譯,應用程式不應設定此旗標。下列限制與互動適用:
|
| D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL | 允許為資源建立深度樣板檢視,並讓資源能轉換為 D3D12_RESOURCE_STATE_DEPTH_WRITE 或 D3D12_RESOURCE_STATE_DEPTH_READ 狀態。大多數介面卡架構會為具有此旗標的紋理配置額外記憶體,以降低有效頻寬並將早期深度測試的最佳化發揮到最大。 若永遠不會進行深度作業,應用程式不應設定此旗標。下列限制與互動適用:
|
| D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS | 允許為資源建立無序存取檢視,並讓資源能轉換為 D3D12_RESOURCE_STATE_UNORDERED_ACCESS 狀態。為了提供此功能,某些介面卡架構必須改用效率較低的紋理配置。若紋理很少用於無序存取,請考慮使用兩個紋理並在兩者之間複製;其中一個紋理具有此旗標,另一個則沒有。 若永遠不會進行無序存取作業,應用程式不應設定此旗標。下列限制與互動適用:
|
| D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE | 不允許為資源建立著色器資源檢視,並停用資源轉換為 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 或 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 狀態。 當無法使用著色器資源檢視時,某些介面卡架構的深度樣板紋理頻寬會增加。若紋理很少用於著色器資源,請考慮使用兩個紋理並在兩者之間複製;其中一個紋理設定此旗標,另一個則不設定。 當深度樣板紋理永遠不會從著色器資源檢視使用時,應用程式應設定此旗標。 此常數必須與 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 一起使用。 |
| D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER | 允許資源用於跨介面卡資料,以及 ALLOW_SIMULTANEOUS_ACCESS 所啟用的功能。跨介面卡資源通常無法使用在使用期間降低有效紋理頻寬的技術,而某些介面卡架構可能需要不同的快取行為。 若資源資料永遠不會與其他介面卡一起使用,應用程式不應設定此旗標。下列限制與互動適用:
|
| D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS | 允許多個不同的佇列、裝置或處理程序同時存取資源。例如,此功能可讓資源用於在同時執行的多個命令清單中所執行的 ResourceBarrier 轉換。 同時存取允許多個讀取者與一個寫入者,只要寫入者不會同時修改其他讀取者正在存取的紋素即可。某些介面卡架構無法在使用期間運用降低有效紋理頻寬的技術。不過,若在頻繁且不重疊地寫入紋理時不需要多個讀取者,應用程式不應設定此旗標。 使用此旗標可能會影響資源柵欄執行等候的能力,並會使資源無法使用任何壓縮。 下列限制與互動適用:
|
| D3D12XBOX_RESOURCE_FLAG_PREFER_INDEX_BUFFER | 將資源標示為偏好作為索引緩衝區。 |
| D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER | 允許資源作為間接緩衝區。建立間接緩衝區時需要此旗標。 |
| D3D12XBOX_RESOURCE_FLAG_PREFER_INDIRECT_BUFFER | 將資源標示為偏好作為間接緩衝區。 |
| D3D12XBOX_RESOURCE_FLAG_PREFER_PREDICATION_BUFFER | 將資源標示為偏好作為述詞緩衝區。 |
| D3D12XBOX_RESOURCE_FLAG_PREFER_STREAM_OUTPUT | 將資源標示為偏好用於串流輸出 (SO)。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_COMPRESSION_DATA | 拒絕資源使用所有類型的壓縮中繼資料。此旗標會防止為轉譯目標資源建立 CMask 與 FMask 中繼資料表面。此旗標不會防止為深度樣板資源建立 HTile 中繼資料表面。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_COLOR_COMPRESSION_DATA | 拒絕資源使用色彩壓縮資料。此旗標會防止為轉譯目標資源建立 CMask 與 FMask 中繼資料表面。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA | 拒絕資源使用深度壓縮中繼資料。此旗標不會防止為深度樣板資源建立 HTile 中繼資料表面。若指定了 D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA 或 D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA 任一資源建立旗標,就會停用計算清除。若兩者皆指定,則會停用快速清除。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA | 拒絕資源使用樣板壓縮中繼資料。此旗標不會防止為深度樣板資源建立 HTile 中繼資料表面。若指定了 D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_DATA 或 D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_DATA 任一資源建立旗標,就會停用計算清除。若兩者皆指定,則會停用快速清除。 |
| D3D12XBOX_RESOURCE_FLAG_ALLOW_DCC | 在支援的色彩轉譯目標資源上啟用差異色彩壓縮 (DCC)。在 XBOX Series X|S 中,這也可以套用至交換資源。適用於 XBOX Series X|S 與 XBOX One X,但不支援 XBOX One 或 XBOX One S。 |
| D3D12XBOX_RESOURCE_FLAG_FORCE_TEXTURE_COMPATIBILITY | 啟用相容壓縮資源的紋理取樣,包括支援的色彩轉譯目標資源與深度目標資源。適用於 XBOX Series X|S 與 XBOX One X,但不支援 XBOX One 或 XBOX One S。 |
| D3D12XBOX_RESOURCE_FLAG_FORCE_DCC_TEXTURE_COMPATIBILITY | 待定 |
| D3D12XBOX_RESOURCE_FLAG_FORCE_HTILE_TEXTURE_COMPATIBILITY | 待定 |
| D3D12XBOX_RESOURCE_FLAG_FORCE_FMASK_TEXTURE_COMPATIBILITY | 待定 |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR | 會被其他資源設定別名的深度緩衝區應使用此旗標! 拒絕 HTile 對 zMask 使用「已展開並清除」值。此旗標允許在 HTile 中使用「15 個 Z 平面」zMask 值,在某些情況下可能稍微節省頻寬,但代價是在許多圖格未被寫入但已展開的情況下,解壓縮時間會變長。此旗標有助於深度樣板資源別名的情境:先前的記憶體內容可能包含「已展開並清除」的位元模式,而 ClearDepthStencilView 會略過清除具有該值的圖格。若要解決此問題,請呼叫 DiscardResource 以重新初始化中繼資料,或指定此旗標。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_PLANES | 拒絕 HTile 在 zMask 中儲存 Z 平面資訊。圖格會在 DB (非清除) 寫入時展開。對於清除後未被觸及且不處於 expclear 狀態的圖格,仍必須使用解壓縮來寫出。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL_COMPRESSION_SMEM | 拒絕 HTile 在 sMem 中儲存樣板資訊。圖格會在 DB (非清除) 寫入時展開。 |
| D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP | 為 HDR 遊戲的 HDR 交換緩衝區啟用自動 SDR 色調對應。SDR 影像用於錄製 SDR Game DVR 短片或串流至 SDR 顯示器。這會產生額外的 GPU 與記憶體成本,因為圖形驅動程式會自動為額外的交換鏈配置緩衝區,並在 present 呼叫之前插入計算著色器。此旗標不適用於 XBOX Series X|S 主機。在 XBOX Series X|S 中,自動 SDR 色調對應是在顯示硬體中完成,不會產生 GPU 與記憶體成本。對於 XBOX Series X|S,只要不設定此旗標即可啟用硬體色調對應器。XBOX One 不支援 HDR,因此此旗標僅適用於 XBOX One S 與 XBOX One X。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_STENCIL_HTILE | 防止為深度樣板資源建立 HTile 中繼資料表面。由於相關資料位於 HTile 中,此旗標實際上隱含所有 D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH 與 D3D12XBOX_RESOURCE_FLAG_DENY_STENCIL 旗標。 |
| D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_EXPCLEAR | D3D12XBOX_RESOURCE_FLAG_DENY_DEPTH_COMPRESSION_EXPCLEAR 的別名。 |
