Sintaxis
Parámetros
pLibraryBlobTipo: const void * Si el blob de biblioteca de entrada está vacío, el contenido inicial de la biblioteca está vacío. Si el blob de biblioteca de entrada no está vacío, se valida su integridad, se analiza y se almacena el puntero. El puntero proporcionado como entrada a este método debe permanecer válido durante la vigencia del objeto devuelto. Por motivos de eficiencia, los datos no se copian. BlobLength
Tipo: SIZE_T Especifica la longitud de pLibraryBlob en bytes. riid
Tipo: const IID & Especifica un REFIID único para el objeto ID3D12PipelineLibrary. Normalmente, establezca este parámetro y el siguiente con la macro
IID_PPV_ARGS(&Library), donde Library es el nombre del objeto.
ppPipelineLibraryTipo: void ** Devuelve un puntero a la biblioteca creada.
Valor devuelto
Tipo: HRESULT Si la función se ejecuta correctamente, devuelve S_OK. De lo contrario, devuelve un código de error HRESULT, incluido E_INVALIDARG si el blob está dañado o no se reconoce, D3D12_ERROR_DRIVER_VERSION_MISMATCH si los datos proporcionados proceden de un controlador o entorno de ejecución antiguo, y D3D12_ERROR_ADAPTER_NOT_FOUND si los datos proceden de hardware diferente. Si pasanullptr para pPipelineLibrary, el entorno de ejecución sigue realizando la validación del blob, pero evita crear la biblioteca real y devuelve S_FALSE si la biblioteca se habría creado.
Además, la característica requiere un controlador actualizado e intentar usarla en controladores antiguos devolverá DXGI_ERROR_UNSUPPORTED.
Comentarios
Una biblioteca de canalizaciones permite las siguientes operaciones.- Agregar objetos de estado de canalización (PSO) a un objeto de biblioteca existente (consulte StorePipeline).
- Serializar una biblioteca de PSO en un bloque de memoria contiguo para su almacenamiento en disco (consulte Serialize).
- Deserializar una biblioteca de PSO desde el almacenamiento persistente (esto lo controla CreatePipelineLibrary).
- Recuperar PSO individuales de la biblioteca (consulte LoadComputePipeline y LoadGraphicsPipeline).
Seguridad para subprocesos
La biblioteca de canalizaciones es segura para subprocesos y se sincronizará internamente según sea necesario, con una excepción: varios subprocesos que carguen el mismo PSO (mediante LoadComputePipeline, LoadGraphicsPipeline o LoadPipeline) deben sincronizarse entre sí, ya que esta acción puede modificar el estado de esa canalización dentro de la biblioteca de una manera que no es segura para subprocesos.Ejemplos
Consulte el ejemplo de caché de estado de canalización de Direct3D 12.Requisitos
Encabezado: d3d12_xs.h o d3d12_x.hBiblioteca: d3d12_xs.lib o d3d12_x.lib
Plataformas compatibles: consolas XBOX Series y familia XBOX One
