Sintaxe
Parâmetros
pLibraryBlobTipo: const void * Se o blob da biblioteca de entrada estiver vazio, o conteúdo inicial da biblioteca será vazio. Se o blob da biblioteca de entrada não estiver vazio, ele será validado quanto à integridade, analisado e o ponteiro será armazenado. O ponteiro fornecido como entrada para este método deve permanecer válido durante todo o tempo de vida do objeto retornado. Por motivos de eficiência, os dados não são copiados. BlobLength
Tipo: SIZE_T Especifica o comprimento de pLibraryBlob em bytes. riid
Tipo: const IID & Especifica um REFIID exclusivo para o objeto ID3D12PipelineLibrary. Normalmente, defina este parâmetro e o seguinte com a macro
IID_PPV_ARGS(&Library), em que Library é o nome do objeto.
ppPipelineLibraryTipo: void ** Retorna um ponteiro para a biblioteca criada.
Valor retornado
Tipo: HRESULT Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, retornará um código de erro HRESULT, incluindo E_INVALIDARG se o blob estiver corrompido ou não for reconhecido, D3D12_ERROR_DRIVER_VERSION_MISMATCH se os dados fornecidos vierem de um driver ou runtime antigo e D3D12_ERROR_ADAPTER_NOT_FOUND se os dados vierem de um hardware diferente. Se você passarnullptr para pPipelineLibrary, o runtime ainda executará a validação do blob, mas evitará criar a biblioteca real e retornará S_FALSE se a biblioteca tivesse sido criada.
Além disso, o recurso requer um driver atualizado, e tentar usá-lo em drivers antigos retornará DXGI_ERROR_UNSUPPORTED.
Comentários
Uma biblioteca de pipelines permite as seguintes operações.- Adicionar objetos de estado de pipeline (PSOs) a um objeto de biblioteca existente (consulte StorePipeline).
- Serializar uma biblioteca de PSOs em um bloco contíguo de memória para armazenamento em disco (consulte Serialize).
- Desserializar uma biblioteca de PSOs a partir de armazenamento persistente (isso é feito por CreatePipelineLibrary).
- Recuperar PSOs individuais da biblioteca (consulte LoadComputePipeline e LoadGraphicsPipeline).
Acesso thread-safe
A biblioteca de pipelines é thread-safe e fará a sincronização interna conforme necessário, com uma exceção: vários threads carregando o mesmo PSO (por meio de LoadComputePipeline, LoadGraphicsPipeline ou LoadPipeline) devem se sincronizar por conta própria, pois esse ato pode modificar o estado desse pipeline na biblioteca de uma maneira que não é thread-safe.Exemplos
Confira o exemplo de cache de estado de pipeline do Direct3D 12.Requisitos
Cabeçalho: d3d12_xs.h ou d3d12_x.hBiblioteca: d3d12_xs.lib ou d3d12_x.lib
Plataformas com suporte: consoles XBOX Series e família XBOX One
