語法
typedef enum D3D12_RESOURCE_STATES
{
D3D12_RESOURCE_STATE_COMMON = 0,
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x0001,
D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x0002,
D3D12_RESOURCE_STATE_RENDER_TARGET = 0x0004,
D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x0008,
D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x0010,
D3D12_RESOURCE_STATE_DEPTH_READ = 0x0020,
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x0040,
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x0080,
D3D12_RESOURCE_STATE_STREAM_OUT = 0x0100,
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x0200,
D3D12_RESOURCE_STATE_COPY_DEST = 0x0400,
D3D12_RESOURCE_STATE_COPY_SOURCE = 0x0800,
D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
D3D12_RESOURCE_STATE_GENERIC_READ = D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER | D3D12_RESOURCE_STATE_INDEX_BUFFER | D3D12_RESOURCE_STATE_COPY_SOURCE | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE,
D3D12_RESOURCE_STATE_PRESENT = 0,
D3D12_RESOURCE_STATE_PREDICATION = D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT,
D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_COLOR = 0x00400000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH = 0x00400000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_STENCIL = 0x00800000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH_STENCIL = D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH | D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_STENCIL,
D3D12XBOX_RESOURCE_STATE_PRESERVE_INDIRECT_COLOR_CLEAR = 0x01000000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_SCATTERED_COLOR_FMASK = 0x02000000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_COLOR = 0x04000000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH = 0x04000000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_STENCIL = 0x08000000,
D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH_STENCIL = D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH | D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_STENCIL,
} D3D12_RESOURCE_STATES
常數
| 常數 | 描述 |
|---|---|
| D3D12_RESOURCE_STATE_COMMON | 只有在跨不同類型的圖形引擎存取資源時,應用程式才應轉換為此狀態。具體而言,資源在 COPY 佇列上使用之前 (若先前在 DIRECT 或 COMPUTE 佇列上使用過),或在 DIRECT 或 COMPUTE 佇列上使用之前 (若先前在 COPY 佇列上使用過),都必須處於此狀態。在 DIRECT 與 COMPUTE 佇列之間存取資料時,沒有此限制。 凡是使用隱含狀態轉換之處,都可以在 COPY 佇列上使用 COMMON 狀態。如需詳細資訊,請參閱同步處理與多引擎中的多佇列資源存取一節。此外,若要讓 CPU 存取有效,紋理必須處於 COMMON 狀態 (前提是紋理一開始就是在 CPU 可見的堆積中建立)。 |
| D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER | 當 3D 管線將子資源作為頂點緩衝區或常數緩衝區存取時,子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12_RESOURCE_STATE_INDEX_BUFFER | 當 3D 管線將子資源作為索引緩衝區存取時,子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12_RESOURCE_STATE_RENDER_TARGET | 資源用作轉譯目標。當子資源被轉譯,或以 ClearRenderTargetView 清除時,子資源必須處於此狀態。這是唯寫狀態。若要將轉譯目標作為著色器資源讀取,資源必須處於 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 或 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 狀態。 |
| D3D12_RESOURCE_STATE_UNORDERED_ACCESS | 資源用於無序存取。當 3D 管線透過無序存取檢視存取子資源時,子資源必須處於此狀態。呼叫 ClearUnorderedAccessViewInt 或 ClearUnorderedAccessViewFloat 清除子資源時,子資源也必須處於此狀態。這是讀取/寫入狀態。 |
| D3D12_RESOURCE_STATE_DEPTH_WRITE | DEPTH_WRITE 狀態與其他狀態互斥。當旗標 (請參閱 D3D12_CLEAR_FLAGS) 指出要清除指定的子資源時,或當子資源要用於可寫入的深度樣板檢視時 (請參閱 D3D12_DSV_FLAGS),且 PSO 已啟用深度寫入 (請參閱 D3D12_DEPTH_STENCIL_DESC),請將其用於 ClearDepthStencilView。 |
| D3D12_RESOURCE_STATE_DEPTH_READ | DEPTH_READ 是可與其他狀態結合的狀態。當子資源位於唯讀深度樣板檢視中,或 D3D12_DEPTH_STENCIL_DESC 的 DepthEnable 參數為 false 時,請使用此狀態。它可以與其他讀取狀態結合 (例如 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE),以允許將資源用於深度或樣板測試,並在同一個繪製呼叫中由著色器存取。當繪製呼叫或清除命令將寫入深度時,使用此狀態是無效的。 |
| D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | 資源與像素著色器以外的著色器一起使用。在任何階段 (像素著色器階段除外) 透過著色器資源檢視讀取子資源之前,子資源必須處於此狀態。只要資源也設定了 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 旗標,您仍可在具有此旗標的情況下於像素著色器中使用該資源。這是唯讀狀態。 |
| D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE | 資源與像素著色器一起使用。在像素著色器透過著色器資源檢視讀取子資源之前,子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12_RESOURCE_STATE_STREAM_OUT | 資源與串流輸出一起使用。當 3D 管線將子資源作為串流輸出目標存取時,子資源必須處於此狀態。這是唯寫狀態。 |
| D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT | 資源用作間接引數。當子資源用作傳遞給間接繪製方法 ID3D12GraphicsCommandList::ExecuteIndirect 的引數緩衝區時,子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12_RESOURCE_STATE_COPY_DEST | 資源用作複製作業的目的地。當子資源用作複製或 blt 作業的目的地時,子資源必須處於此狀態。這是唯寫狀態。 |
| D3D12_RESOURCE_STATE_COPY_SOURCE | 資源用作複製作業的來源。當子資源用作複製或 blt 作業的來源時,子資源必須處於此狀態。這是唯讀狀態。 |
| D3D12_RESOURCE_STATE_RESOLVE_DEST | 資源用作解析作業的目的地。 |
| D3D12_RESOURCE_STATE_RESOLVE_SOURCE | 資源用作解析作業的來源。 |
| D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE | |
| D3D12_RESOURCE_STATE_GENERIC_READ | 這是上傳堆積必要的起始狀態。應用程式應盡可能避免此狀態,而是僅將資源轉換為實際使用的狀態。 |
| D3D12_RESOURCE_STATE_PRESENT | 與 D3D12_RESOURCE_STATE_COMMON 同義。 |
| D3D12_RESOURCE_STATE_PREDICATION | 用於述詞。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_COLOR | 保留壓縮的色彩資料。以下是此值的幾個使用範例:{::nomarkdown}
|
| D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH | 保留壓縮的深度資料。此值的一個使用範例是:當紋理經過深度壓縮且為「紋理相容」時,略過深度解壓縮。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_STENCIL | 保留壓縮的樣板資料。此值的一個使用範例是:當只需要解壓縮深度資料時,略過樣板資料的解壓縮;在某些時候,驅動程式可能會自動執行此動作。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_COMPRESSED_DEPTH_STENCIL | 保留壓縮的深度樣板資料。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_INDIRECT_COLOR_CLEAR | 保留間接清除色彩資料。以下是此值可能的使用範例:紋理經過 cmask 快速清除,而您想要略過快速清除消除,改為手動檢查 cmask。如需詳細資訊,請參閱 Cmask 解碼。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_SCATTERED_COLOR_FMASK | 保留分散色彩 fmask 資料。以下是此值可能的使用範例:MSAA 紋理使用壓縮的 fmask,且 fmask 建立為紋理相容,以略過 fmask 解壓縮。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_COLOR | 保留展開的色彩資料。轉換為轉譯目標時,請勿重新啟用壓縮。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH | 保留展開的深度資料。轉換為深度緩衝區時,請勿重新啟用壓縮。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_STENCIL | 保留展開的樣板資料。轉換為樣板緩衝區時,請勿重新啟用壓縮。 |
| D3D12XBOX_RESOURCE_STATE_PRESERVE_EXPANDED_DEPTH_STENCIL | 保留展開的深度與樣板資料。 |
