구문
매개 변수
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 제품군
