> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SerializeComputePipelineStateX (família XBOX One)

> Serializa um objeto de estado de pipeline de computação para permitir o carregamento eficiente em tempo de execução. Este método é chamado durante a criação offline de conteúdo, não no tempo de execução do jogo.

Serializa um objeto de estado de pipeline de computação para permitir o carregamento eficiente em tempo de execução. Este método é chamado durante a criação offline de conteúdo, não no tempo de execução do jogo.

## Sintaxe

```cpp theme={null}
HRESULT SerializeComputePipelineStateX(  
         ID3D12PipelineState* pPipelineState,  
         UINT Flags,  
         D3D12XBOX_SERIALIZE_COMPUTE_PIPELINE_STATE* pSerializeState  
)  
```

### Parâmetros

*pPipelineState*   \_In\_\
Tipo: ID3D12PipelineState\*

Um ponteiro para o estado de pipeline de computação a ser serializado.

*Flags*   \_In\_\
Tipo: UINT

Sinalizadores para controlar esta operação, como uma combinação OR bit a bit das constantes de enumeração D3D12XBOX\_SERIALIZE\_FLAGS. Atualmente, este parâmetro deve ser D3D12XBOX\_SERIALIZE\_FLAGS\_NONE.

*pSerializeState*   \_Out\_\
Tipo: [D3D12XBOX\_SERIALIZE\_COMPUTE\_PIPELINE\_STATE\*](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_serialize_compute_pipeline_state)

O estado serializado resultante.

### Valor retornado

Tipo: HRESULT

Um dos códigos de retorno do Direct3D 12.

## Comentários

Este método serializa um objeto de estado de pipeline (PSO) para permitir o carregamento eficiente em tempo de execução. O método deve ser chamado como parte de uma criação offline de conteúdo, nunca no tempo de execução de um jogo. Normalmente, o método seria usado por uma ferramenta baseada em PC que invoca a implementação UMD12\_PC.DLL/XGS12\_PC\_XS.DLL baseada em PC da API, do driver e do compilador de sombreador do Direct3D 12.x do XBOX One. O método também pode ser chamado em devkits do XBOX One quando os sinalizadores [D3D12XBOX\_PROCESS\_DEBUG\_FLAG\_INSTRUMENTED](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_process_debug_flags) e D3D12\_PROCESS\_DEBUG\_FLAG\_DEBUG\_LAYER\_ENABLED são usados: os sinalizadores que são constantes de enumeração na enumeração [D3D12XBOX\_PROCESS\_DEBUG\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12xbox_process_debug_flags).

Chamar este método serializará um PSO em suas partes componentes, em um formato que [ID3D12Device::DeserializeComputePipelineStateX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_deserializecomputepipelinestatex) pode carregar com eficiência em tempo de execução. Para evitar desperdício de espaço em disco e na memória, espera-se que os chamadores eliminem a duplicação dos componentes resultantes em sua coleção de PSOs. Por exemplo, é provável que vários PSOs tenham exatamente o mesmo conjunto de instruções de GPU para um sombreador quando apenas os limites de sombreador forem diferentes entre os objetos. Cabe ao desenvolvedor (1) realizar um hash ou uma comparação de memória entre essas invocações e (2) identificar as partes componentes que podem ser compartilhadas. Os desenvolvedores gerenciarão o posicionamento e o tempo de vida de todos os componentes de PSO serializados em tempo de execução e especificarão os locais dos componentes de PSO serializados na chamada a **DeserializeComputePipelineStateX**, o que facilita esse compartilhamento.

Para um jogo típico, a maioria dos PSOs é criada offline, usando este mecanismo **SerializeComputePipelineStateX/DeserializeComputePipelineStateX**.

Os sombreadores desserializados podem ser usados em conjunto com [ID3D12Device::CreateDerivedComputePipelineStateX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_createderivedcomputepipelinestatex), para permitir a criação eficiente de variações de PSO em tempo de execução. Isso significa que não é necessário criar todas as permutações de estado possíveis de PSOs usando **SerializeComputePipelineStateX**.

**SerializeComputePipelineStateX** retorna estruturas [ID3DBlob](https://msdn.microsoft.com/library/windows/desktop/ff728743\(v=vs.85\).aspx) para cada uma das partes componentes resultantes. Para consultar os buffers de componentes resultantes, o chamador chamará [ID3DBlob::GetBufferPointer](https://msdn.microsoft.com/library/windows/desktop/ff728744\(v=vs.85\).aspx) e [ID3DBlob::GetBufferSize](https://msdn.microsoft.com/library/windows/desktop/ff728745\(v=vs.85\).aspx); para liberar a memória depois de copiar os resultados, o chamador chamará Release.

Os ponteiros de blob podem ser nulos para sombreadores inativos. Alguns sombreadores podem ter um blob **pGpuInstructions**, mas não um blob **pMetaData** correspondente. (**pGpuInstructions** e **pMetaData** são membros da estrutura [D3D12XBOX\_SERIALIZE\_SHADER](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_serialize_shader).) Todas as partes componentes devem ser mantidas e fornecidas de volta para [ID3D12Device::DeserializeComputePipelineStateX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_deserializecomputepipelinestatex).

O D3D12.x usa um CRC para garantir que todas as partes componentes fornecidas para **DeserializeComputePipelineStateX** correspondam exatamente às geradas por **SerializeComputePipelineStateX**.

Observe que **SerializeComputePipelineStateX** não pode ser usado para serializar um objeto de estado de pipeline que tenha sido desserializado anteriormente por meio de **DeserializeComputePipelineStateX**.

## Requisitos

**Cabeçalho:** d3d12\_x.h

**Biblioteca:** d3d12\_x.lib

**Plataformas com suporte:** família XBOX One

## Confira também

[ID3D12Device](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [CreateComputePipelineState](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcomputepipelinestate_public.md)
- [D3D12_COMPUTE_PIPELINE_STATE_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_compute_pipeline_state_desc_public.md)
- [LoadComputePipeline](/pt-BR/reference/graphics/d3d12/interfaces/id3d12pipelinelibrary/methods/id3d12pipelinelibrary_loadcomputepipeline_public.md)
- [Serialize](/pt-BR/reference/graphics/d3d12/interfaces/id3d12pipelinelibrary/methods/id3d12pipelinelibrary_serialize_public.md)
- [Diretório de tópicos NDA: links ativos do Microsoft Learn](/pt-BR/nda/nda-topic-directory.md)
