> ## 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.

# SerializeGraphicsPipelineStateX (família XBOX One)

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

Serializa um objeto de estado de pipeline (PSO) 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 SerializeGraphicsPipelineStateX(  
         ID3D12PipelineState* pPipelineState,  
         UINT Flags,  
         D3D12XBOX_SERIALIZE_GRAPHICS_PIPELINE_STATE* pSerializeState  
)  
```

### Parâmetros

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

O estado de pipeline gráfico a ser serializado, como um ponteiro para ID3D12PipelineState.

*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\_GRAPHICS\_PIPELINE\_STATE\*](/pt-BR/reference/graphics/d3d12_x/structs/d3d12xbox_serialize_graphics_pipeline_state)

O estado serializado resultante como um ponteiro para uma estrutura D3D12XBOX\_SERIALIZE\_GRAPHICS\_PIPELINE\_STATE.

### Valor retornado

Tipo: HRESULT

Um dos [códigos de retorno do Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues).

## Comentários

Este método serializa um 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 [DeserializeGraphicsPipelineStateX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_deserializegraphicspipelinestatex) 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 o estado do rasterizador for diferente entre os objetos. Cabe ao desenvolvedor realizar um hash ou uma comparação de memória entre essas invocações e 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 **DeserializeGraphicsPipelineStateX**, facilitando assim esse compartilhamento.

Para um título típico, a maioria dos PSOs é criada offline, usando este mecanismo **SerializeGraphicsPipelineStateX/DeserializeGraphicsPipelineStateX**.

Para permitir a criação eficiente de variações de PSO em tempo de execução, use sombreadores desserializados em conjunto com [CreateDerivedGraphicsPipelineStateX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_createderivedgraphicspipelinestatex). Não é necessário criar todas as permutações de estado possíveis de PSOs usando **SerializeGraphicsPipelineStateX**.

**SerializeGraphicsPipelineStateX** 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 que não estão ativos. 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 [DeserializeGraphicsPipelineStateX](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_deserializegraphicspipelinestatex).

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

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

## 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

- [Serialize](/pt-BR/reference/graphics/d3d12/interfaces/id3d12pipelinelibrary/methods/id3d12pipelinelibrary_serialize_public.md)
- [CreateGraphicsPipelineState](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_creategraphicspipelinestate_public.md)
- [SetPipelineState](/pt-BR/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_setpipelinestate_public.md)
- [CreateComputePipelineState](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcomputepipelinestate_public.md)
- [Diretório de tópicos NDA: links ativos do Microsoft Learn](/pt-BR/nda/nda-topic-directory.md)
