構文
パラメーター
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 を参照)。
スレッド安全性
パイプライン ライブラリはスレッド セーフに使用でき、必要に応じて内部で同期を行いますが、1 つの例外があります。同じ PSO を複数のスレッドがロードする場合 (LoadComputePipeline、LoadGraphicsPipeline、または LoadPipeline 経由)、スレッド セーフではない方法でライブラリ内のそのパイプラインの状態が変更される可能性があるため、これらのスレッドは自身で同期する必要があります。例
Direct3D 12 パイプライン ステート キャッシュ サンプル を参照してください。要件
ヘッダー: d3d12_xs.h または d3d12_x.hライブラリ: d3d12_xs.lib または d3d12_x.lib
サポートされているプラットフォーム: XBOX Series 本体および XBOX One ファミリ
