語法
參數
pLibraryBlob類型:const void * 如果輸入的程式庫 Blob 是空的,則程式庫的初始內容是空的。如果輸入的程式庫 Blob 不是空的,則會驗證其完整性、加以剖析,並儲存指標。作為此方法輸入所提供的指標,在傳回物件的存留期間內必須保持有效。基於效率考量,不會複製資料。 BlobLength
類型:SIZE_T 指定 pLibraryBlob 的長度 (以位元組為單位)。 riid
類型:const IID & 指定 ID3D12PipelineLibrary 物件的唯一 REFIID。通常會使用巨集
IID_PPV_ARGS(&Library) 設定此參數和下一個參數,其中 Library 是物件的名稱。
ppPipelineLibrary類型:void ** 傳回所建立程式庫的指標。
傳回值
類型:HRESULT 如果函式成功,會傳回 S_OK。否則會傳回 HRESULT 錯誤碼,包括 Blob 損毀或無法辨識時的 E_INVALIDARG、提供的資料來自舊版驅動程式或執行階段時的 D3D12_ERROR_DRIVER_VERSION_MISMATCH,以及資料來自不同硬體時的 D3D12_ERROR_ADAPTER_NOT_FOUND。 如果您為 pPipelineLibrary 傳遞nullptr,執行階段仍會執行 Blob 的驗證,但不會建立實際的程式庫;如果原本會建立程式庫,則會傳回 S_FALSE。
此外,此功能需要更新的驅動程式,嘗試在舊版驅動程式上使用時會傳回 DXGI_ERROR_UNSUPPORTED。
備註
管線程式庫可啟用下列作業。- 將管線狀態物件 (PSO) 新增至現有的程式庫物件 (請參閱 StorePipeline)。
- 將 PSO 程式庫序列化為連續的記憶體區塊以供磁碟儲存 (請參閱 Serialize)。
- 從永續性儲存體還原序列化 PSO 程式庫 (由 CreatePipelineLibrary 處理)。
- 從程式庫擷取個別 PSO (請參閱 LoadComputePipeline 和 LoadGraphicsPipeline)。
執行緒安全性
管線程式庫可安全地在多執行緒中使用,並會視需要在內部進行同步處理,但有一個例外:多個執行緒載入相同的 PSO (透過 LoadComputePipeline、LoadGraphicsPipeline 或 LoadPipeline) 時應自行同步處理,因為此動作可能會以非執行緒安全的方式修改程式庫內該管線的狀態。範例
請參閱 Direct3D 12 管線狀態快取範例。需求
標頭: d3d12_xs.h 或 d3d12_x.h程式庫: d3d12_xs.lib 或 d3d12_x.lib
支援的平台:XBOX Series 主機與 XBOX One 系列
