> ## 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 (XBOX One 系列)

> 將計算管線狀態物件序列化，以便在執行階段有效率地載入。此方法會在離線建立內容期間呼叫，而不是在遊戲執行階段呼叫。

將計算管線狀態物件序列化，以便在執行階段有效率地載入。此方法會在離線建立內容期間呼叫，而不是在遊戲執行階段呼叫。

## 語法

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

### 參數

*pPipelineState*   \_In\_\
類型：ID3D12PipelineState\*

指向要序列化之計算管線狀態的指標。

*Flags*   \_In\_\
類型：UINT

用來控制此作業的旗標，以 D3D12XBOX\_SERIALIZE\_FLAGS 列舉常數的位元 OR 組合表示。目前此參數必須為 D3D12XBOX\_SERIALIZE\_FLAGS\_NONE。

*pSerializeState*   \_Out\_\
類型：[D3D12XBOX\_SERIALIZE\_COMPUTE\_PIPELINE\_STATE\*](/zh-TW/reference/graphics/d3d12_x/structs/d3d12xbox_serialize_compute_pipeline_state)

產生的序列化狀態。

### 傳回值

類型：HRESULT

其中一個 Direct3D 12 傳回碼。

## 備註

此方法會將管線狀態物件 (PSO) 序列化，以便在執行階段有效率地載入。此方法應在離線建立內容時呼叫，絕不可在遊戲執行階段呼叫。一般而言，此方法會由 PC 型工具使用，該工具會叫用 XBOX One Direct3D 12.x API、驅動程式和著色器編譯器的 PC 型 UMD12\_PC.DLL/XGS12\_PC\_XS.DLL 實作。使用 [D3D12XBOX\_PROCESS\_DEBUG\_FLAG\_INSTRUMENTED](/zh-TW/reference/graphics/d3d12_x/enums/d3d12xbox_process_debug_flags) 和 D3D12\_PROCESS\_DEBUG\_FLAG\_DEBUG\_LAYER\_ENABLED 旗標 (即 [D3D12XBOX\_PROCESS\_DEBUG\_FLAGS](/zh-TW/reference/graphics/d3d12_x/enums/d3d12xbox_process_debug_flags) 列舉中的列舉常數旗標) 時，也可以在 XBOX One 開發套件主機上呼叫此方法。

呼叫此方法會將 PSO 序列化為其元件片段，形式可讓 [ID3D12Device::DeserializeComputePipelineStateX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_deserializecomputepipelinestatex) 在執行階段有效率地載入。為了避免浪費磁碟和記憶體空間，呼叫端應在其 PSO 集合中將產生的元件去除重複。例如，當多個 PSO 之間只有著色器限制不同時，這些物件可能會具有完全相同的著色器 GPU 指令集。開發人員必須自行 (1) 在這類叫用之間執行雜湊或記憶體比較，以及 (2) 識別可共用的元件片段。開發人員會在執行階段管理所有序列化 PSO 元件的放置位置和存留期，並在呼叫 **DeserializeComputePipelineStateX** 時指定序列化 PSO 元件的位置，讓這類共用變得容易。

對於一般遊戲，大多數 PSO 都是使用此 **SerializeComputePipelineStateX/DeserializeComputePipelineStateX** 機制離線建立的。

還原序列化的著色器可以與 [ID3D12Device::CreateDerivedComputePipelineStateX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_createderivedcomputepipelinestatex) 搭配使用，以便在執行階段有效率地建立 PSO 變化。這表示不需要使用 **SerializeComputePipelineStateX** 建立 PSO 所有可能的狀態排列。

**SerializeComputePipelineStateX** 會針對每個產生的元件片段傳回 [ID3DBlob](https://msdn.microsoft.com/library/windows/desktop/ff728743\(v=vs.85\).aspx) 結構。若要查詢產生的元件緩衝區，呼叫端會呼叫 [ID3DBlob::GetBufferPointer](https://msdn.microsoft.com/library/windows/desktop/ff728744\(v=vs.85\).aspx) 和 [ID3DBlob::GetBufferSize](https://msdn.microsoft.com/library/windows/desktop/ff728745\(v=vs.85\).aspx)；若要在複製結果後釋放記憶體，呼叫端會呼叫 Release。

對於非作用中的著色器，blob 指標可能為 null。某些著色器可能有 **pGpuInstructions** blob，但沒有對應的 **pMetaData** blob。(**pGpuInstructions** 和 **pMetaData** 是 [D3D12XBOX\_SERIALIZE\_SHADER](/zh-TW/reference/graphics/d3d12_x/structs/d3d12xbox_serialize_shader) 結構的成員)。所有元件片段都必須保存，並提供回 [ID3D12Device::DeserializeComputePipelineStateX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_deserializecomputepipelinestatex)。

D3D12.x 會使用 CRC 確保提供給 **DeserializeComputePipelineStateX** 的所有元件片段與 **SerializeComputePipelineStateX** 產生的元件片段完全相符。

請注意，**SerializeComputePipelineStateX** 無法用來序列化先前已透過 **DeserializeComputePipelineStateX** 還原序列化的管線狀態物件。

## 需求

**標頭：** d3d12\_x.h

**程式庫：** d3d12\_x.lib

**支援的平台：** XBOX One 系列

## 另請參閱

[ID3D12Device](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [CreateComputePipelineState](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcomputepipelinestate_public.md)
- [D3D12_COMPUTE_PIPELINE_STATE_DESC](/zh-CN/reference/graphics/d3d12/structs/d3d12_compute_pipeline_state_desc_public.md)
- [LoadComputePipeline](/zh-CN/reference/graphics/d3d12/interfaces/id3d12pipelinelibrary/methods/id3d12pipelinelibrary_loadcomputepipeline_public.md)
- [Serialize](/zh-CN/reference/graphics/d3d12/interfaces/id3d12pipelinelibrary/methods/id3d12pipelinelibrary_serialize_public.md)
